aqui el codigo..
Código
#include<stdio.h> #include<stdlib.h> struct nodo{ char data; struct nodo *nextPtr; }; typedef struct nodo NODO; typedef NODO *NODOPTR; void insertNodo(NODOPTR *, char); char deleteNodo(NODOPTR *, char); int listLength(NODOPTR); void ordenarAscendente(NODOPTR *, NODOPTR *); void printLista(NODOPTR); main() { NODOPTR startPtr = NULL, startPtr2 = NULL; char value; int choice; while (choice != 4){ switch (choice){ case 1: insertNodo(&startPtr, value); printLista(startPtr); break; case 2: deleteNodo(&startPtr, value); printLista(startPtr); break; case 3: if(listLength(startPtr) == NULL) else break; default: } } ordenarAscendente(&startPtr, &startPtr2); printLista(startPtr2); return 0; } void insertNodo(NODOPTR *sPtr, char val) { NODOPTR newPtr, previousPtr, currentPtr; if (newPtr != NULL){ newPtr -> data = val; newPtr -> nextPtr = NULL; previousPtr = NULL; currentPtr = *sPtr; while (currentPtr != NULL){ previousPtr = currentPtr; currentPtr = currentPtr -> nextPtr; } if (previousPtr == NULL){ newPtr -> nextPtr = *sPtr; *sPtr = newPtr; } else{ previousPtr -> nextPtr = newPtr; newPtr -> nextPtr = currentPtr; } } else } char deleteNodo(NODOPTR *sPtr, char val) { NODOPTR previousPtr, currentPtr, tempPtr; if (val == (*sPtr) -> data){ tempPtr = *sPtr; *sPtr = (*sPtr) -> nextPtr; return val; } else{ previousPtr = *sPtr; currentPtr = (*sPtr) -> nextPtr; while(currentPtr != NULL && currentPtr -> data != val){ previousPtr = currentPtr; currentPtr = currentPtr -> nextPtr; } if(currentPtr != NULL){ tempPtr = currentPtr; previousPtr -> nextPtr = currentPtr -> nextPtr; return val; } } return '\0'; } int listLength(NODOPTR currentPtr) { int cont = 0; if (currentPtr == NULL) return NULL; else{ while (currentPtr != NULL){ cont++; currentPtr = currentPtr -> nextPtr; } } return cont; } void ordenarAscendente(NODOPTR *sPtr, NODOPTR *sPtr2) { NODOPTR auxPtr, previousPtr, currentPtr, tempPtr; //auxPtr = *sPtr; if (*sPtr == NULL) else{ while (*sPtr != NULL){ tempPtr = *sPtr; previousPtr = NULL; currentPtr = *sPtr2; while (currentPtr != NULL && tempPtr -> data > currentPtr -> data){ previousPtr = currentPtr; currentPtr = currentPtr -> nextPtr; } if (previousPtr == NULL){ tempPtr -> nextPtr = *sPtr2; *sPtr2 = tempPtr; } else{ previousPtr -> nextPtr = tempPtr; tempPtr -> nextPtr = currentPtr; } *sPtr = (*sPtr) -> nextPtr; } } } void printLista(NODOPTR currentPtr) { if (currentPtr == NULL) else{ while (currentPtr != NULL){ currentPtr = currentPtr -> nextPtr; } } }
Saludos!!