CList::CList(void) // Basic constructor { Rear = Current = Header = new CListNode; Header->Next = Header; Size = 0; Position = 0; } void CList::MakeEmpty( ) // Remove all entries { CListNode *Ptr; CListNode *NextNode; for( Ptr = Header->Next; Ptr != Header; Ptr = NextNode ) { NextNode = Ptr->Next; delete Ptr; } Header->Next = Header; Size = 0; Position = 0; Rear = Current = Header; } void CList::Insert( const double v, const int n ) { // Add node after Current CListNode *NewNode; NewNode = new CListNode; NewNode->value = v; NewNode->num = n; NewNode->Next = Current->Next; Current->Next = NewNode; if (Rear == Current) Rear = NewNode; Size++; } void CList::First( ) // Set Current to first node { if ( Header->Next == Header) { cout << "Illegal access - empty list\n"; exit(1); } Current = Header->Next; Position = 1; } void CList::Last( ) // Set Current to last node { if ( Header->Next == Header) { cout << "Illegal access - empty list\n"; exit(1); } CListNode *T; int pos = 0; for (T=Header; T != Rear; T = T->Next) pos++; Current = Rear; Position = pos; } void CList::Zeroth( ) // Set Current to header node { Current = Header; Position = 0; } void CList::operator++( ) // Move Current to next node { Current = Current->Next; Position++; if (Current == Header) Position = 0; }