В FAQе нашел файлик, где реализованы процедуры обработки списков, взял создание, печать, формирование списка в обратной последовательности. Затем поэлементно сравниваю два списка, а мне всегда выдается ответ Не симметричны и на экране при выводе пред первым элементом отображается какой то пробел, и он же потом отображается после последнего в обратном списке. Наверное из за этого и ответ не симметричность. Подскажите, где ошибка
program Project1;
{$APPTYPE CONSOLE}
Type
TElem = string; {Òèï èíôîðìàöèîííîé ÷àñòè}
TList = ^TNode; {Ïðåäñòàâëåíèå ñïèñêà }
TNode = record {Çâåíî ñïèñêà}
Info: TElem; {Èíôîðìàöèîííàÿ ÷àñòü}
Next: TList {Ñëåäóþùèé ýëåìåíò ñïèñêà}
end;
var spis,spis2:Tlist;
st:string;
flag:boolean;
Procedure ZListInit(var L: TList);
var
N: TList; {çàãëàâíûé ýëåìåíò}
Begin
new(N);
N^.Next:=nil;
L:=N
End;
procedure ZListAddLast(L: TList; E: TElem);
begin
{ ïîèñê ïîñëåäíåãî ýëåìåíòà ñïèñêà }
while L^.Next<>nil do L := L^.Next;
{ äîáàâëåíèå à ñïèñîê íîâîãî çâåíà }
new(L^.Next );
L:=L^.Next;
L^.Info:=E;
L^.Next:=nil
end;
procedure BListInvert(var L: TList);
var
H: TList; { âñïîìîãàòåëüíûé óêàçàòåëü }
P: TList; { óêàçàòåëü íà îáðàáîòàííûé ýëåìåíò ñïèñêà }
begin
P := nil;
while L<>nil do
begin
{( çàïîìèíàåì óêàçàòåëü íà ñëåäóþùèé )}
H := L^.Next;
{( òåïåðü ñëåäóþùèé çà òåêóùèì áóäåò çâåíî Ð )}
L^.Next := P;
{( òåêóùèé ñòàíîâèòñÿ ïðåäûäóùèì )}
{( äëÿ ñëåäóþùåãî øàãà )}
P := L;
{( ïåðåèåùàåèñÿ ê ñëåäóþùåèó ýëåìåíòó ñïèñêà )}
L:=H
end;
L :=P { ñàìûé ïîñëåäíèé ñòàíîâèòñÿ ïåðâûì }
end;
{ Ñïèñîê ñ çàãëàâíûì çâåíîè }
procedure ZListInvert (L: TList);
begin
BListInvert ( L^.Next )
end;
procedure BListPrint(L: TList );
begin
write('<');
while L <> nil DO
begin
write( L^.Info );
If L^.Next <> nil then write(' ');
L := L^.Next
end;
writeln('>')
end;
procedure ZListPrint(L: TList);
begin
BListPrint(L^.Next )
end;
Begin
ZListInit(spis);
Writeln('vvedite slova v konze .');
readln(st);
While st<>'.' do
begin
ZListAddLast(spis, st);
Readln(st);
end;
spis2:=spis;
BListPrint(spis);
writeln;
BListInvert(spis2);
BListPrint(spis2);
flag:=true;
while spis <> nil DO
begin if spis^.info<>spis2^.info then flag:=false;
spis := spis^.Next; spis2 := spis2^.Next;end;
if flag then Writeln('Simmetrichniy') Else Writeln('Ne Simmetrichniy');
readln;
End.
Пытался найти ошибку сам, но так и не пойму, откуда берется пробел перед элементами