ADTList

Double linked list class.

Types

ListNode* = POINTER TO ListNodeDesc;
ListNodeDesc* = RECORD
        element-: ADT.Element;
        next, prev: ListNode;
    END;
List * = POINTER TO ListDesc;
ListDesc* = RECORD (ListNodeDesc)
        size: LONGINT;
    END;
ListIterator* = POINTER TO ListIteratorDesc;
ListIteratorDesc* = RECORD
        list : List;
        current : ListNode;
        reverse : BOOLEAN;
    END;

Procedures

ListNode.Next

PROCEDURE (this : ListNode) Next*() : ListNode;

ListNode.Prev

Prev node or NIL if first

PROCEDURE (this : ListNode) Prev*() : ListNode;

List.Clear

Clear tree content

PROCEDURE (this : List) Clear*;

List.Init

Initialize

PROCEDURE (this : List) Init*;

List.IsEmpty

Return TRUE if list is empty

PROCEDURE (this: List) IsEmpty*(): BOOLEAN;

List.Size

Return list size

PROCEDURE (this: List) Size*(): LONGINT;

List.First

Return first node

PROCEDURE (this: List) First*(): ListNode;

List.Last

Return last node

PROCEDURE (this: List) Last*(): ListNode;

List.Iterator

Get tree iterator

PROCEDURE (this : List) Iterator*(reverse := FALSE : BOOLEAN): ListIterator;

ListIterator.Next

Advance iterator. Return FALSE if end is reached.

PROCEDURE (this : ListIterator) Next*() : BOOLEAN;

ListIterator.Element

Current element or NIL

PROCEDURE (this : ListIterator) Element*() : ADT.Element;

ListIterator.Reset

Reset iterator to start of tree.

PROCEDURE (this : ListIterator) Reset*();

ListIterator.Insert

Insert element before current iterator position

PROCEDURE (this : ListIterator) Insert*(e : ADT.Element) ;

List.Append

Append element to tail of list

PROCEDURE (this: List) Append*(e: ADT.Element);

List.AppendHead

Append element to head of list

PROCEDURE (this: List) AppendHead*(e: ADT.Element);

List.Pop

Remove and return element at tail of list

PROCEDURE (this: List) Pop*(): ADT.Element;

List.PopHead

Remove and return element at head of list

PROCEDURE (this: List) PopHead*(): ADT.Element;