Создать связанный список из записей, содержащих данные телефонного справочника - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. program Ukazateli_Spisok;
  2. uses Crt;
  3. type Llist = ^List; //указатель на тип Llist
  4. List = record
  5. nam: string[10];//имя в справочнике
  6. int: int64; //номер телефона
  7. Link: Llist; //для сохран.адреса след.записи или nil
  8. end;
  9. var a, b, c : Llist; //переменные-указатели типа Llist
  10. i, // i для цикла For
  11. n : integer; //n количество вводимых записей
  12. BEGIN ClrScr;
  13. Write('Введите кол-во записей -> '); Readln(n); //вводим количество записей в списке
  14. new(a); //выделяем память для ПУ(переменная-указатель) а
  15. b:= a; //запоминаем адрес начала списка в ПУ b
  16. {начинаем заполнять список}
  17. for i:=1 to n do begin
  18. write('введите ',i,' имя -> '); readln(a^.nam);
  19. write('введите ',i,' номер -> '); readln(a^.int);
  20. a^.link:= nil; //в конец последней записи ставим nil(конец)
  21. {если не последняя запись,то в конец списка доб.новую запись}
  22. if i < n then begin
  23. c:= a; //адрес последней записи а передаем в ПУ с
  24. new(c^.link); //выделяем память для новой записи
  25. a:= c^.link; //передаем адрес новой записи в ПУ а
  26. end; // if
  27. end; // For
  28. writeln;
  29. writeln('вывод инфы');
  30. writeln;
  31. a:= b; //адрес начала списка из ПУ b передаем в ПУ а
  32. while a <> nil do begin //выводим всю инфу из списка пока не конец
  33. write(a^.nam);
  34. writeln(a^.int:12);
  35. a:= a^.link; //переходим к следующей записи
  36. end;// while
  37. dispose(a);dispose(c);//освобождаем память выделенную для ПУ а и с
  38. writeln('вы вышли из проги Enter -> ');
  39. readln;
  40. END.
Если есть какие замечания или дополнения пишите
Небольшое уточнение 20 строку программы a^.link:= nil лучше поставить в 28 строку т.е. после цикла заполнения списка чтобы меньше было лишних телодвижений

Решение задачи: «Создать связанный список из записей, содержащих данные телефонного справочника»

textual
Листинг программы
  1. {$mode delphi} // Это обязательно !!!
  2. unit RecUnit;
  3.  
  4. interface
  5.  
  6. type
  7.   Rec = record
  8.     nam : string[10];
  9.     int : int64;
  10.     class operator Equal(A, B : Rec) : boolean;
  11.   end;
  12.  
  13. implementation
  14.  
  15. class operator Rec.Equal(A, B : Rec) : boolean;
  16. begin
  17.   result := (A.nam = B.nam) and (A.int = B.int);
  18. end;
  19.  
  20. end.

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


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

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

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы