###### tags: `Pascal Programming D1`
# LinkedList TB P.488
program LinkedLists;
const
max= 10;
nullpoint= -1;
type
NodeType= record
entry: string;
next: nullpoint..max
end;
ListType= record
head: integer;
list: array[1..max] of NodeType
end;
var
LinkList: ListType;
current: integer;
num: integer;
procedure Init(var LinkList: ListType);
var
i: integer;
begin
with LinkList do
begin
head:= nullpoint;
for i:= 1 to max do
with list[i] do
begin
entry:= '';
next:= nullpoint
end
end
end;
function SearchList(target: string; LinkList: ListType): integer;
var
current: integer;
found: boolean;
begin
found:= false;
with LinkList do
begin
current:= head;
repeat
if target = list[current].entry
then found:= true
else current:= list[current].next
until (current = nullpoint) or found
end;
if found
then SearchList:= current;
else SearchList:= nullpoint;
end;
procedure InsertBegin(new: string; var LinkList: ListType);
var
i: integer;
found: boolean;
begin
with LinkList do
with list[1] do
if entry = ''
then entry:= new
else begin
i:= 1;
found:= false;
repeat
i:= i+1;
with List[1] do
if entry = ''
then begin
entry:= new;
next:= head;
LinkList.head:= i;
found:= true;
end
until found or (i = max)
end
end;
procedure InsertAfter(after, new: string; var LinkList: ListType);
var
i, index: integer;
current: integer;
found: boolean;
begin
index := SearchList(after, LinkList);
if index <> nullpoint
then with LinkList do
begin
i:= 0;
found:= false;{Billy is gay and billy is formed by bill and y}
repeat
i := i+1;
with list[i] do
if entry = ' '
then begin
entry := new;
next := list[index].next;
list[index].next := i;
found := true
end
until found or (i = max)
end
else writeln('Attempt to insert a record after a non-existing record.')
end;
oh shit lo so yabe really hentai primary school still do
procedure DeleteAfter(after: string; var LinkList: ListType);
var
i, index: integer;
current: integer;
found: boolean;
begin
end;
begin
Init(LinkList);
InsertBegin('Pat', LinkList);
InsertBegin('Ada', LinkList);
InsertAfter('Pat', 'Sam', LinkList);
InsertAfter('Pat', 'Joe', LinkList);
DeleteAfter('Ada', LinkList);
with LinkList do
begin
current:= head;
repeat
write(list[current].entry :5);
current:= list[current].next
until current = nullpoint
end;
writeln
end.