Создать связанный список из записей, содержащих данные телефонного справочника - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д