void showMenu() { int choose=0; do { printf("\n"); printf("1. add element at ends of list\n"); printf("2. add element at start of list\n"); printf("3. add element at middle of list\n"); printf("4. remove element from starts of list\n"); printf("5. remove element from middle of list\n"); printf("6. remove element from ends of list\n"); printf("7. create list\n"); printf("8. remove list\n"); printf("9. exit\n"); scanf("%i", &choose); switch (choose) { case 1: addLastElement();break; case 2: addFirstElement();break; case 3: addMiddleElement();break; case 4: removeFirstElement();break; case 5: removeMiddleElement();break; case 6: removeLastElement();break; case 7: createList();break; case 8: removeList(); } } while(choose!=9); }
//addElementI() adds data at an arbitraty location, i, in the list //list : a pointer to the LinkedList to add the data to //data : a pointer to the data to be added // assumes that data is correctly sized based on list->elementSize //i : the data added becomes the ith ListElement // if i>number of elements, returns LLOVERRUN // if i<=0, element is inserted at the begining of the list //returns : a status code as defined in linklist.h int addElementI(LinkedList list, const void* data, int i){ ListElement* oldIthElement = iterate(list, i); if(oldIthElement==NULL) { oldIthElement = iterate(list,i-1); if(oldIthElement==NULL) return LLOVERRUN; //case for inserting at end of list return addLastElement(list, data); } ListElement* newElement = createElement(data, list->elementSize); newElement->prevElement = oldIthElement->prevElement; newElement->nextElement = oldIthElement; oldIthElement->prevElement = newElement; if(newElement->prevElement==NULL) list->begining = newElement; else{ ListElement* beforeInsert = newElement->prevElement; beforeInsert->nextElement = newElement; } return LLSUCCESS; }