Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ односвязные линейные списки

Автор: Bast 14.12.2007 0:50

Даны два упорядоченных по не уыванию линейных односвязных списка. Проверьте, содержаться ли элементы первого списка во втором в указанном порядке. помогите плиз

Автор: Bast 15.12.2007 18:09

Ну неужели никто не знает cray.gif

Автор: andriano 15.12.2007 18:13

Есть некоторая неоднозначность в формулировке вопроса: "Содержатся ли элементы" или "содержатся ли в указанном порядке".
Ответ в общем случае будет таков: если содержатся, то именно в указанном порядке.

Автор: Lapp 15.12.2007 18:39

А в частном случае - покажи, что сама уже сделала. Надеюсь, ты не рассчитываешь, что здесь напишут всю программу за тебя.

Если теья интересует алгоритм, то он примерно такой:
идешь по двум спискам с начала до конца параллельно. То есть, сначала становишься на первые элементы и сравниваешь их. Потом продвигаешься на один элемент по списку, у которого первый элемент меньше. Потом то же самое, и т.д. Если встречаешь одинаковые элементы - записываешь их и потом продвигаешься по любому из них. И так пока не кончится один из списков.

Автор: andriano 15.12.2007 21:43

Lapp, "в указанном порядке" не означает в общем случае, что элементы должны следовать именно подряд.

Автор: Bast 10.01.2008 23:13

 TYPE
plist=^list;
list=record
data:longint;
next:plist;
end;
VAR
x1,x2:plist;

Procedure readdata;
Begin
//тут эти два списка надо читать
End;

var
y1,y2:plist;
BEGIN
readdata;
y1:=x1;
y2:=x2;
while (y1<>nil) and (y2<>nil) do
begin
if y1^.data<>y2^.data then break;
y1:=y1^.next;
y2:=y2^.next;
end;
if (y1<>nil) or (y2<>nil) then
write('spiski ne ravni')
else
write('spiski ravni');
End.


Вот только незнаю правильно или нет

Автор: Yevgeny 17.01.2008 3:35

а если у тебя окажутся последние элементы в списках (одинаковой длинны) разные, то тогда тогда они будут занилены оба, а прога напишет, что они равны, вроде бы!
Так что тебе лучше всего сделать эти списки с последним пустым элементом, а белать всегда до предпоследнего, погда у тебя с нилами никаких проблем не будет smile.gif

Добавлено через 1 мин.
бегать lol.gif