IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Объединение 2 упорядоченных списков, работа со списками
DruiD
сообщение 21.04.2007 12:33
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Андрей

Репутация: -  0  +


Помогите составить программу, которая объединяет 2 упорядоченных по убыванию списка в один, тоже упорядоченный по убыванию. После к-того элемента вставить max элемент списка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 22.04.2007 12:59
Сообщение #2


Гость






Не нужен никакой третий список... Все прекрасно делается с двумя:


{ Объявляешь доп. переменные }
var
p1, p2, T: spisok;
first: boolean;

... { Здесь - ввод списков }

{
Проверяешь, в каком списке стартовый элемент больший...
Этот список для тебя - ПЕРВЫЙ
}
if begqa^.inf > begqb^.inf then begin
p1 := begqa; p2 := begqb;
first := true;
end
else begin
p1 := begqb; p2 := begqa;
first := false;
end;

{
Дальше - сам алгоритм
}
while (p1 <> nil) and (p2 <> nil) do begin

while (p1^.link <> nil) and (p1^.link^.inf > p2^.inf) do p1 := p1^.link;
if p1.link <> nil then begin

T := p2^.link;

p2^.link := p1^.link;
p1^.link := p2;

p2 := T;
end;
T := p1;
p1 := p1^.link;

end;

{
Не забываем "прилепить" к концу первого списка остаток второго, если он есть
}
T^.link := p2;

{
ну, и распечатыаем соответственно тот список, который ПЕРВЫЙ (см. выше)
}
if first then p := begqa
else p := begqb;

while p<>nil do begin
write(' ',p^.inf); p:=p^.link;
end;
writeln;



Добавлено через 1 мин.
Тестировалось на
<17, 15, 9, 1, 0>
и
<14, 7, 6, 2, -2>

Вроде работает...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.08.2025 7:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"