program lists2;
uses linkedList in 'linkedList.pas';
const SIZE = 10000;
var NUM: cardinal;
code, i, j, k: integer;
l1,l2,l3: TLinkedList;
begin
NUM:=1;
if ParamCount=1 then Val(ParamStr(1),NUM,code);
for i:=1 to NUM do begin
l1:=TLinkedList.Create;
l2:=TLinkedList.Create;
l3:=TLinkedList.Create;
for j:=1 to SIZE do
l1.addTail(j);
if l1.getFirst(j) then
repeat
l2.addTail(j);
until not l1.getNext(j);
for j:=1 to SIZE do
l3.addTail(l2.removeFront);
for j:=1 to SIZE do
l2.addTail(l3.removeTail);
l1.reverse;
l1.getFirst(j);
if j<>SIZE then begin
writeln('l1 has invalid first element'); exit;
end;
if (l1.Count<>SIZE)or(l1.Count<>l2.Count) then begin
writeln('sizes don''t match'); exit;
end;
l1.getFirst(j); l2.getFirst(k);
repeat
if j<>k then begin
writeln('l1 and l2 not equal'); exit;
end;
until not(l1.getNext(j) and l2.getNext(k));
writeln(l1.count);
l1.Destroy; l2.Destroy; l3.Destroy;
end;
end.