Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct nodo
- {
- int a;
- struct nodo* sig;
- };
- int contar_nodos = 0;
- struct nodo* primer_nodo = NULL;
- struct nodo* lista = NULL;
- struct nodo* aux = NULL;
- void Eliminar_UltimoNodo(void)
- {
- struct nodo* n = primer_nodo;
- struct nodo* anterior_nodo = NULL;
- if(primer_nodo->sig == NULL)
- {
- primer_nodo = NULL;
- aux = NULL;
- lista = NULL;
- free(n);
- }
- else
- {
- while (n->sig != NULL)
- {
- anterior_nodo = n;
- n = n->sig;
- }
- n = lista;
- lista = anterior_nodo;
- aux = anterior_nodo;
- lista->sig = NULL;
- free(n);
- }
- printf("El ultimo nodo se libero con exito\n");
- --contar_nodos;
- }
- void Eliminar_PrimerNodo(void)
- {
- struct nodo* n = primer_nodo;
- primer_nodo = primer_nodo->sig;
- free(n);
- puts("El primer nodo se libero con exito\n");
- --contar_nodos;
- }
- int CrearNodos(void)
- {
- lista = malloc(sizeof(struct nodo));
- if (lista == NULL)
- {
- printf("ERROR: No se pudo reservar memoria.\n");
- return 0;
- }
- ++contar_nodos;
- printf("Ingrese un numero:\n");
- scanf("%d", &lista->a);
- if (primer_nodo == NULL)
- {
- lista->sig = NULL;
- primer_nodo = lista;
- aux = lista;
- }
- else
- {
- lista->sig = NULL;
- aux->sig = lista;
- aux = lista;
- }
- return 1;
- }
- void MostrarNodos(void)
- {
- struct nodo* n = primer_nodo;
- printf("Elementos:\n");
- while (n != NULL)
- {
- printf("%d\n", n->a);
- n = n->sig;
- }
- }
- void EliminarNodos(void)
- {
- while (primer_nodo != NULL)
- {
- aux = primer_nodo;
- primer_nodo = primer_nodo->sig;
- free(aux);
- }
- aux = NULL;
- lista = NULL;
- }
- int main(void)
- {
- int menu;
- while(1)
- {
- printf("Menu de Opciones:\n");
- printf("1. Crear nodo\n");
- printf("2. Mostrar elementos del nodo\n");
- printf("3. Eliminar el primer elemento del nodo\n");
- printf("4. Eliminar el ultimo elemento del nodo\n");
- printf("5. Salir del programa\n");
- printf("Ingrese una opcion <1-5>\n");
- scanf("%d", &menu);
- if((menu >= 2 && menu <= 4) && (contar_nodos == 0))
- {
- printf("ERROR: La lista esta vacia\n");
- system("pause");
- continue;
- }
- switch(menu)
- {
- case 1:
- CrearNodos();
- break;
- case 2:
- MostrarNodos();
- break;
- case 3:
- Eliminar_PrimerNodo();
- break;
- case 4:
- Eliminar_UltimoNodo();
- break;
- case 5:
- if(contar_nodos != 0)
- EliminarNodos();
- return 0;
- default: printf("ERROR: Ingrese una opcion invalida <1-5>\n");
- }
- system("pause");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement