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); }
int removeThisElement(LIST l, unsigned int numeroDeElemento) { unsigned int i=0; unsigned int estado=0; nodo* tempNodo=l->firstNode; nodo* eraseNodo; estado=isListEmpty(l); //chequeo si la lista esta o no vacia if(estado){ if(numeroDeElemento=0){ //me esta pidiendo el primero return (removeFirstElement(l)); } else if( numeroDeElemento<=((l->nodeCount)-1)){ //algun otro if(numeroDeElemento==((l->nodeCount)-1)){ //es el ultimo return (removeLastElement(l)); }else { while (i<(numeroDeElemento-2)){ tempNodo=tempNodo->next; ++i; } //tempNodo me apunta al anterior al que quiero eliminar eraseNodo=tempNodo->next; tempNodo->next=eraseNodo->next; --(l->nodeCount); free(eraseNodo->elemento); free(eraseNodo); return 0; } } else{return ERROR;} //se pidio mas elementos de lo que se tiene } else {return ERROR;} //la lista estaba vacia!, ojo programador! }
int main(){ liste* l = creerListe(); int a = 1; addElementFirst(&l, &a, sizeof(int)); a++; addElementFirst(&l, &a, sizeof(int)); a++; //addElementLast(l, &a, sizeof(int)); removeLastElement(l); visuListe(l, (void(*)(void *))visuElement); freeListe(&l); return 0; }