double remove(int method) // 1: first; 2: last { if(!isEmpty()) { double dd; switch(method) { case 1: dd = dll->removeFirst(); break; case 2: dd = dll->removeLast(); break; default: cout << "Deque::remove(): unknown remove method: remove first\n"; dd = dll->removeFirst(); break; } // end switch nElems--; return dd; } // end if else { cout << "Deque::remove(): cannot remove, deque is empty\n"; return -1; } } // end remove()
int main () { // Construct a linked list with header & trailer cout << "Create a new list" << endl; DoublyLinkedList<string> dll; cout << "list: " << dll << endl << endl; // Insert 10 nodes at back with value 10,20,30,..,100 cout << "Insert 10 nodes at back with value 10,20,30,..,100" << endl; for (int i=10;i<=100;i+=10) { stringstream ss; ss << i; dll.insertLast(ss.str()); } cout << "list: " << dll << endl << endl; // Insert 10 nodes at front with value 10,20,30,..,100 cout << "Insert 10 nodes at front with value 10,20,30,..,100" << endl; for (int i=10;i<=100;i+=10) { stringstream ss; ss << i; dll.insertFirst(ss.str()); } cout << "list: " << dll << endl << endl; // Copy to a new list cout << "Copy to a new list" << endl; DoublyLinkedList<string> dll2(dll); cout << "list2: " << dll2 << endl << endl; // Assign to another new list cout << "Assign to another new list" << endl; DoublyLinkedList<string> dll3=dll; cout << "list3: " << dll3 << endl << endl; // Delete the last 10 nodes cout << "Delete the last 10 nodes" << endl; for (int i=0;i<10;i++) { dll.removeLast(); } cout << "list: " << dll << endl << endl; // Delete the first 10 nodes cout << "Delete the first 10 nodes" << endl; for (int i=0;i<10;i++) { dll.removeFirst(); } cout << "list: " << dll << endl << endl; // Check the other two lists cout << "Make sure the other two lists are not affected." << endl; cout << "list2: " << dll2 << endl; cout << "list3: " << dll3 << endl; return 0; }