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;