Created
August 22, 2020 20:58
-
-
Save MRodHer/9ef39b1f1016915c2fa7d0fe48a73ee9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <locale.h> | |
#include <wchar.h> | |
#include <string.h> | |
#include <conio.h> | |
#include <stdlib.h> | |
/*Estructura que nos permite armar la cola. Este es un nodo*/ | |
typedef struct nodo{ | |
int dato; | |
struct nodo*siguiente; /* Este es el apuntador*/ | |
} nodo; /*Este es el nombre de la estructura*/ | |
nodo* primero = NULL; /* Apuntador que apunta al primero de la cola*/ | |
nodo* ultimo = NULL;/* Apuntador que apunta al último de la cola*/ | |
/*Declaración de funciones insertarNodo, desplegarCola y eliminarNodo*/ | |
void insertarNodo(); /* */ | |
void desplegarCola(); | |
void eliminarNodo(); | |
void contarNodo(); | |
int main(){ | |
setlocale(LC_CTYPE, "Spanish"); | |
/*Estructura switch*/ | |
printf("Este programa está diseñado para que pueda trabajar con COLAS.\n\nA continuación se muestra el menú de opciones:\n"); | |
int opcionMenu = 0; | |
do{ | |
printf("\n|--------------------------------|"); | |
printf("\n| °COLA° |"); | |
printf("\n|--------------------------------|"); | |
printf("\n| 1. Insertar | 3. Desplegar |"); | |
printf("\n| 2. Eliminar | 4. Contar |"); | |
printf("\n|--------------------------------|"); | |
printf("\n| 5. Salir |"); | |
printf("\n|--------------------------------|"); | |
printf("\n\n Escoja una opción: "); | |
scanf("%d",&opcionMenu); | |
switch(opcionMenu){ | |
case 1: | |
system("cls"); /*Lo utilizo para limpiar la pantalla y que se simplifique la experiencia para el usuario*/ | |
printf("\n\n Insertar nodo en la cola.\n\n"); | |
insertarNodo(); | |
system("pause"); | |
system("cls"); | |
break; | |
case 2: | |
system("cls"); | |
printf("\n\n Eliminar un nodo de la cola.\n\n"); | |
eliminarNodo(); | |
system("pause"); | |
system("cls"); | |
break; | |
case 3: | |
system("cls"); | |
printf("\n\n Desplegar cola de nodos.\n\n"); | |
desplegarCola(); | |
system("pause"); | |
system("cls"); | |
break; | |
case 4: | |
system("cls"); | |
printf("\n\n Contar nodos en la cola\n\n."); | |
contarNodo(); | |
system("pause"); | |
system("cls"); | |
break; | |
case 5: | |
system("cls"); | |
printf("\n\n Programa finalizado. . . \n\n"); | |
system("pause"); | |
system("cls"); | |
break; | |
default: | |
printf("\n\n Opción no válida\n\n"); | |
} | |
} while(opcionMenu!=5); | |
return 0; | |
} | |
void insertarNodo(){ | |
nodo* nuevo = (nodo*) malloc(sizeof(nodo)); /* El nuevo nodo se llamará "nuevo" y se le asigna espacio de memoria dinámico*/ | |
printf(" Ingresa el dato que contendrá el nuevo nodo: "); | |
scanf("%d",&nuevo->dato); /* El dato se guarda dentro de la propiedad dato del nuevo nodo*/ | |
if (primero ==NULL){ | |
primero = nuevo; | |
primero->siguiente = NULL; | |
ultimo = nuevo; | |
} | |
else{ | |
ultimo->siguiente=nuevo; | |
nuevo->siguiente=NULL; | |
ultimo =nuevo; | |
} | |
printf("\n Nodo ingresado con éxito\n\n"); | |
} | |
void desplegarCola(){ | |
nodo*actual =(nodo*)malloc(sizeof(nodo)); | |
actual=primero; | |
if(primero!=NULL){ | |
while(actual!=NULL){ | |
printf("\n%d\n",actual->dato); | |
actual=actual->siguiente; | |
} | |
} | |
else{ | |
printf("\n La cola no existe\n\n"); | |
} | |
} | |
void eliminarNodo(){ | |
nodo*actual=(nodo*)malloc(sizeof(nodo)); | |
actual= primero; | |
nodo*anterior=(nodo*)malloc(sizeof(nodo)); | |
anterior=NULL; | |
int nodoBuscado = 0, encontrado=0; | |
printf("Ingrese el valor del nodo a buscar para eliminar: \n"); | |
scanf("%d", &nodoBuscado); | |
if(primero!=NULL){ | |
while(actual!= NULL && encontrado !=1){ | |
if(actual->dato== nodoBuscado){ | |
if(actual==primero){ | |
primero=primero->siguiente; | |
} | |
else if(actual==ultimo){ | |
anterior->siguiente=NULL; | |
ultimo=anterior; | |
} | |
else { | |
anterior->siguiente=actual->siguiente; | |
} | |
printf("Nodo eliminado con éxito\n\n"); | |
encontrado=1; | |
} | |
anterior=actual; | |
actual=actual->siguiente; | |
} | |
if(encontrado==0){ | |
printf("\nNodo no encontrado\n\n"); | |
}else{ | |
free(anterior); | |
} | |
} | |
else{ | |
printf("\nLa cola no existe\n\n"); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment