Ниже приведена процедура, которая строит связанный список записей, считывая их из файла. Здесь подразумевается, что вы открыли файл записей Tperson и именем NoteFile, который содержит по крайней мере одну запись.
procedure NewListRec;
var i:integer;
begin
New(List); {выделить память для первой записи }
{заполнить информационные поля}
List^.Name:=concat('person1');
List^.phone:='01';
CurrentRec := List; {сделать первую запись теку-щей }
for i:=2 to n do
begin
{ выделить память для следующей записи }
New(CurrentRec^.Next);
str(i,s);
CurrentRec^.Next^.Name:=concat('person',s);
CurrentRec^.Next^.phone:=concat('0',s);
{ сделать следующую запись текущей }
CurrentRec := CurrentRec^.Next;
end;
{ после последней записи следующей нет }
CurrentRec^.Next := nil;
end;
Перемещение по списку
Когда у вас есть список, вы можете легко выполнять поиск в нем конкретной записи. Ниже показана функция, которая находит первую запись с конкретным именем и возвращает указатель на нее.
function FindRec(FindName: string): PPerson;
var Pers: PPerson;
begin
Pers := List; { указывает на первую запись }
while (Pers^.Name <> FindName) and
(Pers^.Next <> nil) do
Pers := Pers^.Next;
if pers^.Name = FindName then
FindRec := Pers { возвращает указатель на найденную запись }
else
FindRec := nil; {если таких записей нет }
end;
|