Создать связанный список из записей, содержащих данные телефонного справочника - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы