// Linked list example #include #include "SLinkedListOfInt.h" using namespace std; void showMenu(); int main() { const int NUMLISTS = 10; SLinkedListOfInt l[NUMLISTS] = {NULL}; char cmd; int i, k, lnum; do { showMenu(); cin >> cmd; switch (cmd) { case 'c' : i = 0; while (i < NUMLISTS && l[i] != NULL) i++; if (i == NUMLISTS) { cerr << "No more lists may be created\n"; break; } l[i] = createList(); break; case 'd' : cin >> lnum; destroyList(l[lnum]); break; case 'p' : cin >> lnum; cerr << "List " << lnum << ": "; printList(l[lnum]); break; case 'P' : for (i = 0; i < NUMLISTS; i++) { if (l[i] != NULL) { cerr << "List " << i << ": "; printList(l[i]); } } break; case 'i' : cin >> i >> lnum; insertIntoList(l[lnum], i); break; case 'r' : cin >> i >> lnum; if (removeFromList(l[lnum], i) < 0) { cerr << i << " not in list " << lnum << endl; } break; case 'y' : cin >> i >> lnum; if (lnum == i) { break; } destroyList(l[i]); l[i] = copyList(l[lnum]); break; case 'm' : cin >> i >> k >> lnum; if (lnum == i && lnum == k) { SLinkedListOfInt ltemp = copyList(l[lnum]); destroyList(l[lnum]); l[lnum] = mergeLists(ltemp, ltemp); } else if (lnum == i) { SLinkedListOfInt ltemp = copyList(l[lnum]); destroyList(l[lnum]); l[lnum] = mergeLists(ltemp, l[k]); } else if (lnum == k) { SLinkedListOfInt ltemp = copyList(l[lnum]); destroyList(l[lnum]); l[lnum] = mergeLists(l[i], ltemp); } else { destroyList(l[lnum]); l[lnum] = mergeLists(l[i], l[k]); } break; case 'e' : cin >> lnum; if (isListEmpty(l[lnum])) { cerr << "List " << lnum << " is empty\n"; } else { cerr << "List " << lnum << " is not empty\n"; } break; case 'q' : break; default : cout << "The letter '" << cmd << "' is not a valid cmd\n"; break; } } while (cmd != 'q'); return 0; } void showMenu() { cout << "This program lets you test your linked list implementation\n"; cout << "Use the following single-letter commands to test:\n"; cout << " c - create a list "; cout << "d # - destroy list #\n"; cout << " p # - print list # "; cout << "P - print all lists\n"; cout << " i #1 #2 - insert elem 1 into list 2 "; cout << "r #1 #2 - remove elem 1 from list 2\n"; cout << " y #1 #2 - copy list 2 into list 1 "; cout << "m #1 #2 #3 - merge list 1 & 2 into 3\n"; cout << " e # - ask if list # is empty "; cout << "q - quit the test program\n\n"; cout << "Command: "; }