void List::DeleteItem() { Node * tempPtr = 0; if(pos == front) { front = front->next; delete pos; Reset(); } else { tempPtr = front; while(tempPtr != NULL) { if(tempPtr->next == pos) { tempPtr->next=pos->next; delete pos; Reset(); break; } else { tempPtr = tempPtr->next; } } } } void List::InsertInOrder(Node &v) { if(front == 0) { AddAtFront(v); return; } else { Node vv; Node * oldPos = pos; Reset(); while(!EndOfList()) { GetNext(vv); if(v.CompareTo(vv) <= 0) { // we found where it goes InsertBefore(v); // cout << " b " << v.data << " "; pos = oldPos; return; } } // it is greater than all items in the list add at back AddAtRear(v); // cout << " r " << v.data << " "; pos = oldPos; } } void List::InsertBefore(Node &v) { if(front == 0 || pos == 0 || pos == front) { AddAtFront(v); } else { Node * temp = FindNode(front, pos); if(temp == 0) { throw "bad return from FindNode in InsertBefore."; } Node * nPtr = new Node(); nPtr->data = v.data; nPtr->data = pos; temp->next = nPtr; } } void List::Print() { Node * temp = FindNode(front, 0); cout << "end value = " << temp->data << endl; }