Oto kod źródłowy na podstawie tego pseudokodu
program listajednokierunkowa;
uses crt;
type TLine=
record
number:integer;
line:string;
end;
PNode=^TNode;
TNode=
record
data:TLine;
next:PNode;
end;
procedure insertNode(var head:PNode;x:TLine);
var newNode,y,z:PNode;
begin
new(NewNode);
newNode^.data.number:=x.number;
newNode^.data.line:=x.line;
if(head=nil) then
begin
head:=newNode;
newNode^.next:=nil;
end
else
begin
y:=head;
z:=nil;
while((y<>nil)and(newNode^.data.line>y^.data.line) do
begin
z:=y;
y:=y^.next;
end;
newNode^.next:=y;
z^.next:=newNode;
end;
end;
procedure deleteNode(var head:PNode;x:PNode);
var y:PNode;
begin
if(head<>nil) then
if(head=x) then
begin
head:=x^.next;
dispose(x);
end
else
begin
y:=head;
while(y^.next<>x) do
y:=y^.next;
y^.next:=x^.next;
dispose(x);
end;
end;
function findNode(head:PNode;x:TLine):PNode;
var p:PNode;
begin
p:=head;
while(p<>nil)and not((p^.data.number=x.number)and(p^.data.line=x.line)) do
p:=p^.next;
findNode:=p;
end;
procedure printList(head:PNode);
var p:PNode;
begin
p:=head;
while(p<>nil) do
begin
writeln(p^.data.number,' ',p^.data.line);
p:=p^.next;
end;
end;
var l:TLine;
list:PNode;
f:text;
i:integer;
path:string;
begin
clrscr;
writeln('Podaj sciezke do pliku');
readln(path);
assign(f,path);
reset(f);
i:=1;
while not eof(f) do
begin
readln(f,l.line);
l.number:=i;
insertNode(list,l);
i:=i+1;
end;
close(f);
printList(list);
readkey;
while(head<>nil) do
deleteNode(head,head);
end.