Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unlist;
- interface
- type
- TInfo = integer;
- PElem = ^TElem;
- TElem = record
- info: TInfo;
- next: PElem;
- prev: PElem;
- end;
- procedure CreateList(var listB, listE: PElem; r: TInfo); // создание списка из одного элемента
- procedure AddFirst(var listB, listE: PElem; r: TInfo); // добавление нового элемента перед первым
- procedure AddLast(var listB, listE: PElem; r: TInfo); // добавление нового элемента в конец
- procedure Add(listB, listC, listE: PElem; r: TInfo); // добавление нового элемента после listC
- procedure FreeList(var listB, listE: PElem); // очистка списка
- implementation
- procedure CreateList(var listB, listE: PElem; r: TInfo); // создание списка из одного элемента
- begin
- New(listB);
- listE := listB;
- listB^.info := r;
- listB^.next := nil;
- listB^.prev := nil
- end;
- procedure AddFirst(var listB, listE: PElem; r: TInfo); // добавление нового элемента перед первым
- begin
- New(listB^.prev);
- listB^.prev^.info := r;
- listB^.prev^.next := listB;
- listB^.prev^.prev := nil;
- listB := listB^.prev;
- end;
- procedure AddLast(var listB, listE: PElem; r: TInfo); // добавление нового элемента в конец
- begin
- New(listE^.next);
- listE^.next^.info := r;
- listE^.next^.next := nil;
- listE^.next^.prev := listE;
- listE := listE^.next;
- end;
- procedure Add(listB, listC, listE: PElem; r: TInfo); // добавление нового элемента после listC
- var
- t, listC1: PElem;
- begin
- listC1 := listC^.next;
- New(t);
- t^.info := r;
- t^.next := listC1;
- t^.prev := listC;
- listC^.next := t;
- listC1^.prev := t;
- end;
- procedure FreeList(var listB, listE: PElem); // очистка списка
- var
- Elem: PElem;
- begin
- Elem := listB;
- while Elem <> nil do
- begin
- listB := listB^.next;
- Dispose(Elem);
- Elem := listB;
- end;
- listE := nil;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement