[Back to POINTERS SWAG index] [Back to Main SWAG index] [Original]
type
PDataRec = ^TDataRec;
TDataRec = record
Name: String;
Next: PDataRec;
end;
const
DataRecList: PDataRec = nil;
CurRec :PDataRec = nil;
procedure AddRec(AName: String);
var Temp: PDataRec;
begin
New(CurRec);
CurRec^.Name := AName;
CurRec^.Next := nil;
Temp := DataRecList;
if Temp = nil then
DataRecList := CurRec
else
begin
while Temp^.Next <> nil do Temp := Temp^.Next;
Temp^.Next := CurRec;
end;
end;
procedure PrevRec;
var Temp: PDataRec;
begin
Temp := DataRecList;
if Temp <> CurRec then
while Temp^.Next <> CurRec do Temp := Temp^.Next;
CurRec := Temp;
end;
procedure NextRec;
begin
if CurRec^.Next <> nil then CurRec := CurRec^.Next;
end;
procedure List;
var Temp: PDataRec;
begin
Temp := DataRecList;
while Temp <> nil do
begin
Write(Temp^.Name);
if Temp = CurRec then
Writeln(' <<Current Record>>')
else
Writeln;
Temp := Temp^.Next;
end;
end;
begin
AddRec('Tom'); AddRec('Dick'); AddRec('Harry'); AddRec('Fred');
Writeln('Original List');
List;
Writeln;
Readln;
PrevRec; PrevRec;
Writeln('After Two PrevRec Calls');
List;
Writeln;
Readln;
NextRec;
Writeln('After One NextRec Call');
List;
Writeln;
Readln;
Writeln('End of Program.');
end.
[Back to POINTERS SWAG index] [Back to Main SWAG index] [Original]