Создать связанный список из записей, содержащих данные телефонного справочника - Free Pascal
Формулировка задачи:
program Ukazateli_Spisok;
uses Crt;
type Llist = ^List; //указатель на тип Llist
List = record
nam: string[10];//имя в справочнике
int: int64; //номер телефона
Link: Llist; //для сохран.адреса след.записи или nil
end;
var a, b, c : Llist; //переменные-указатели типа Llist
i, // i для цикла For
n : integer; //n количество вводимых записей
BEGIN ClrScr;
Write('Введите кол-во записей -> '); Readln(n); //вводим количество записей в списке
new(a); //выделяем память для ПУ(переменная-указатель) а
b:= a; //запоминаем адрес начала списка в ПУ b
{начинаем заполнять список}
for i:=1 to n do begin
write('введите ',i,' имя -> '); readln(a^.nam);
write('введите ',i,' номер -> '); readln(a^.int);
a^.link:= nil; //в конец последней записи ставим nil(конец)
{если не последняя запись,то в конец списка доб.новую запись}
if i < n then begin
c:= a; //адрес последней записи а передаем в ПУ с
new(c^.link); //выделяем память для новой записи
a:= c^.link; //передаем адрес новой записи в ПУ а
end; // if
end; // For
writeln;
writeln('вывод инфы');
writeln;
a:= b; //адрес начала списка из ПУ b передаем в ПУ а
while a <> nil do begin //выводим всю инфу из списка пока не конец
write(a^.nam);
writeln(a^.int:12);
a:= a^.link; //переходим к следующей записи
end;// while
dispose(a);dispose(c);//освобождаем память выделенную для ПУ а и с
writeln('вы вышли из проги Enter -> ');
readln;
END.
Небольшое уточнение
20 строку программы a^.link:= nil
лучше поставить в 28 строку т.е.
после цикла заполнения списка
чтобы меньше было лишних телодвижений
Решение задачи: «Создать связанный список из записей, содержащих данные телефонного справочника»
textual
Листинг программы
{$mode delphi} // Это обязательно !!!
unit RecUnit;
interface
type
Rec = record
nam : string[10];
int : int64;
class operator Equal(A, B : Rec) : boolean;
end;
implementation
class operator Rec.Equal(A, B : Rec) : boolean;
begin
result := (A.nam = B.nam) and (A.int = B.int);
end;
end.