Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal]Списки


Автор: roman89 9.1.2007, 18:34
завтро нужно сдать, а блин ничего не получается...=(

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

Автор: Igor_St 9.1.2007, 22:11
Вот один из возможных вариантов решения  smile 

Код


Type PNode=^TNode;
         TNode=record
           info:integer;
           next:TNode;
         end; 

var Node1,Node2,head1,head2:PNode;
      string1,string2:string;

begin
string1:='';
string2:='';

//создание списков Node1,Node2

head1:=Node1;//Node1,Node2 - указатели на первый элемент списка
head2:=Node2;

while (Head1<>nil)and(head2<>nil)and(Head1^.info=Head2^.info) do
 begin
   Head1:=head1^.next;
   Head2:=head2^.next;
 end;

//вывод первого списка с несовпадающего элемента
while head1<>nil do
 begin
   string1:=string1+inttostr(head1^.info)+'  ';
   head1:=head1^.next;
 end;
                                                                                                    }эти два одинаковых цикла хорошо бы объединить в процедуру,

//вывод второго списка с несовпадающего элемента
while head2<>nil do
 begin
   string2:=string2+inttostr(head2^.info)+'  ';
   head1:=head1^.next;
 end;

writeln(string1);
writeln(string2);

//Удаление списков и всех динамических переменных

end;




Автор: Lena88 9.1.2007, 22:40
огромное спасибо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)