home *** CD-ROM | disk | FTP | other *** search
- program tlist;
-
- uses Links;
-
- type
- NameType = string[10];
- person = object(link)
- name :NameType;
- constructor init(nameArg :NameType);
- end;
- Pperson = ^person;
-
- constructor person.init(nameArg :NameType);
- begin
- name := nameArg;
- link.init;
- end;
-
- var
- queue : Phead;
- man : Pperson;
- man2 : Pperson;
- n : integer;
- tf : boolean;
-
- begin
- new(queue,Init);
- tf := queue^.Empty;
- new(man,Init('Bill'));
- man^.Into(queue);
- new(man,Init('Tom'));
- man^.Into(queue);
- new(man,Init('Jerry'));
- man^.Into(queue);
-
- man := queue^.First;
- writeln('First man in queue is ',man^.name);
- man := queue^.Last;
- writeln('Last man in queue is ',man^.name);
-
- n := queue^.Cardinal;
- writeln('Length of queue is ',n);
- if not queue^.Empty then writeln('EMPTY reports queue NOT empty');
-
- new(man2,Init('Hugo'));
- man2^.Precede(man);
-
- new(man2,Init('Alfonso'));
- man2^.Follow(man);
- { should now be: Bill Tom Hugo Jerry Alfonso }
- writeln('After PRECEDE and FOLLOW calls, list should be:');
- writeln(' {Bill, Tom, Hugo, Jerry, Alfonso}');
- writeln('Actual list is:');
-
- man := queue^.First;
- while man <> NIL do
- begin
- write(man^.name,' ');
- man := man^.Suc;
- end;
- writeln;
-
- man := queue^.Last;
- writeln('The same list backwards is:');
- while man <> NIL do
- begin
- write(man^.name,' ');
- man := man^.Pred;
- end;
- writeln;
-
- n := queue^.Cardinal;
- writeln('Queue size should be 5 now, is: ', n);
-
- queue^.Clear;
- writeln('After clear operation,');
- n := queue^.Cardinal;
- writeln(' Queue size is ',n);
- tf := queue^.Empty;
- if tf then writeln(' and EMTPY reports queue is empty.');
- writeln;
- writeln('Done with test.');
- end.
-