Advertisement
Guest User

Untitled

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