Pohuyumer

LAB 2.3 (UnList)

May 8th, 2020 (edited)
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.17 KB | None | 0 0
  1. unit UnList;
  2. interface
  3.  
  4. type
  5.   TInfo = char;
  6.  
  7.   PElem = ^TElem;
  8.   TElem = record
  9.       info: TInfo;
  10.       next: PElem;
  11.   end;
  12.  
  13. // создать список из одного элемента
  14. procedure CreateList(var ListN, ListK: PElem; r: TInfo);
  15. // добавить новый элемент перед первым
  16. procedure AddFirst(var ListN: PElem; ListK: PElem; r: TInfo);
  17. // добавить новый элемент в конец списка
  18. procedure AddLast(ListN: PElem; var ListK: PElem; r: TInfo);
  19. // добавить новый элемент в середину после ListC (не в конец)
  20. procedure AddMedium(ListN,ListC,ListK: PElem; r: TInfo);
  21. // очистить список
  22. procedure FreeList(var ListN, ListK: PElem);
  23.  
  24. implementation
  25.  
  26. // создать список из одного элемента
  27. procedure CreateList(var ListN, ListK: PElem; r: TInfo);
  28. begin
  29.   New(ListN);
  30.   ListK:=ListN; // конец и начало совпадают
  31.   ListN^.info:=r;
  32.   ListN^.next:=nil;
  33. end;
  34.  
  35. // добавить новый элемент перед первым
  36. procedure AddFirst(var ListN: PElem; ListK: PElem; r: TInfo);
  37. var Elem: PElem;
  38. begin
  39.   new(Elem);
  40.   Elem^.info:=r;
  41.   Elem^.next:=ListN;
  42.   ListN:=Elem; // теперь он 1-ый
  43. end;
  44.  
  45. // добавить новый элемент в конец
  46. procedure AddLast(ListN: PElem; var ListK: PElem; r: TInfo);
  47. begin
  48.   new(ListK^.next);
  49.   ListK^.next^.info:=r;
  50.   ListK^.next^.next:=nil;
  51.   ListK:= ListK^.next;
  52. end;
  53.  
  54. // добавить новый элемент в середину после ListC (не в конец)
  55. procedure AddMedium(ListN,ListC,ListK: PElem; r: TInfo);
  56. var Elem: PElem;
  57. begin
  58.   new(Elem);
  59.   Elem^.info:=r;
  60.   Elem^.next:=ListC^.next; // после него то, что было после ListC
  61.   ListC^.next:=Elem; // а он сам после ListC
  62. end;
  63.  
  64. // очистить список
  65. procedure FreeList(var ListN, ListK: PElem);
  66. var Elem: PElem;
  67. begin
  68.   Elem:=ListN;
  69.   while Elem<>nil do
  70.   begin
  71.     ListN:=ListN^.next;
  72.     Dispose(Elem);
  73.     Elem:=ListN;
  74.   end;
  75.   ListK:=nil;
  76.   writeln('Список очищен');
  77. end;
  78.  
  79. end.
Add Comment
Please, Sign In to add comment