Skip to content

Instantly share code, notes, and snippets.

@MRodHer
Created August 22, 2020 20:58
Show Gist options
  • Save MRodHer/9ef39b1f1016915c2fa7d0fe48a73ee9 to your computer and use it in GitHub Desktop.
Save MRodHer/9ef39b1f1016915c2fa7d0fe48a73ee9 to your computer and use it in GitHub Desktop.
#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