Advertisement
LuisGerdez

ejercicio 2 codigo

Jun 24th, 2022
982
129 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.78 KB | None
  1. #include <stdio.h>
  2.  
  3. typedef struct nodo{
  4.     int dato;
  5.     struct nodo* siguiente;
  6. }nodo;
  7.  
  8. nodo* primero = NULL;
  9.  
  10. void insertarNodo();
  11. void buscarNodo();
  12. void modificarNodo();
  13. void eliminarNodo();
  14. void imprimirPila();
  15.  
  16.  
  17. int main(){
  18.     printf("Ejemplo de uso de pila en la vida diaria. Tubo con fichas.\n");
  19.  
  20.     int opcion = 0;
  21.  
  22.     do {
  23.         printf("\n1) Insertar ficha\n");
  24.         printf("2) Buscar ficha\n");
  25.         printf("3) Modificar ficha\n");
  26.         printf("4) Eliminar ficha\n");
  27.         printf("5) Mostrar fichas en el tubo\n");
  28.         printf("6) Salir\n");
  29.  
  30.         printf("\n\nSeleccionar opcion: ");
  31.         scanf("%d", &opcion);
  32.  
  33.         switch(opcion){
  34.             case 1:
  35.                 printf("\n\nInsertar ficha en el tubo \n\n");
  36.                 insertarNodo();
  37.                 break;
  38.             case 2:
  39.                 printf("\n\nBuscar una ficha en el tubo \n\n");
  40.                 buscarNodo();
  41.                 break; 
  42.             case 3:
  43.                 printf("\n\nModificar una ficha del tubo \n\n");
  44.                 modificarNodo();
  45.                 break;
  46.             case 4:
  47.                 printf("\n\nEliminar una ficha del tubo \n\n");
  48.                 eliminarNodo();
  49.                 break;
  50.             case 5:
  51.                 printf("\n\nFichas en el tubo \n\n");  
  52.                 imprimirPila();
  53.                 break;
  54.             case 6:
  55.                 printf("\n\nFin");
  56.                 break;
  57.             default:
  58.                 printf("\n\nOpcion invalida! \n\n");   
  59.         }
  60.     } while(opcion != 6);
  61.  
  62.     return 0;
  63. }
  64.  
  65.  
  66.  
  67. void insertarNodo(){
  68.     nodo* nuevo = (nodo*) malloc(sizeof(nodo));
  69.     printf("Ingrese valor de la ficha: ");
  70.     scanf("%d", &nuevo->dato);
  71.     nuevo->siguiente = primero;
  72.     primero = nuevo;
  73. }
  74.  
  75. void buscarNodo(){
  76.     nodo* actual = (nodo*) malloc(sizeof(nodo));
  77.     actual = primero;
  78.     int nodoBuscado = 0, encontrado = 0;
  79.     printf("Ingrese valor de ficha a buscar: ");
  80.     scanf("%d", &nodoBuscado);
  81.     if(primero != NULL){
  82.         while(actual != NULL){
  83.            
  84.             if(actual->dato == nodoBuscado){
  85.                 printf("\nFicha de valor %d encontrada\n\n", nodoBuscado);
  86.                 encontrado = 1;
  87.             }
  88.            
  89.             actual = actual -> siguiente;          
  90.         }
  91.         if(encontrado == 0){
  92.             printf("\nFicha no encontrada\n\n");
  93.         }
  94.     }else{
  95.         printf("\nEl tubo esta vacio\n\n");
  96.     }
  97. }
  98.  
  99. void modificarNodo(){
  100.     nodo* actual = (nodo*) malloc(sizeof(nodo));
  101.     actual = primero;
  102.     int nodoBuscado = 0, encontrado = 0;
  103.     printf("Ingrese el valor de la ficha a modificar: ");
  104.     scanf("%d", &nodoBuscado);
  105.     if(primero != NULL){
  106.         while(actual != NULL){
  107.            
  108.             if(actual->dato == nodoBuscado){
  109.                 printf("\nFicha de valor %d encontrada\n\n", nodoBuscado);
  110.                
  111.                 printf("\nIngrese nuevo valor de la ficha: ");
  112.                 scanf("%d",&actual->dato);
  113.                 printf("Ficha modificada\n\n");
  114.                            
  115.                 encontrado = 1;
  116.             }
  117.            
  118.             actual = actual -> siguiente;          
  119.         }
  120.         if(encontrado == 0){
  121.             printf("\nFicha no encontrada\n\n");
  122.         }
  123.     }else{
  124.         printf("\nEl tubo esta vacio\n\n");
  125.     }
  126. }
  127.  
  128. void eliminarNodo(){
  129.     nodo* actual = (nodo*) malloc(sizeof(nodo));
  130.     actual = primero;
  131.     nodo* anterior = (nodo*) malloc(sizeof(nodo));
  132.     anterior = NULL;
  133.     int nodoBuscado = 0, encontrado = 0;
  134.     printf("Ingrese valor de la ficha a eliminar: ");
  135.     scanf("%d", &nodoBuscado);
  136.     if(primero != NULL){
  137.         while(actual != NULL && encontrado != 1){
  138.             if(actual->dato == nodoBuscado){
  139.                 if(actual == primero){
  140.                     primero = primero -> siguiente;
  141.                 }else{
  142.                     anterior -> siguiente = actual -> siguiente;
  143.                 }
  144.                 printf("\nFicha eliminada con exito!");
  145.                 encontrado = 1;
  146.             }
  147.             anterior = actual;
  148.             actual = actual -> siguiente;          
  149.         }
  150.         if(encontrado == 0){
  151.             printf("\nFicha no encontrada\n\n");
  152.         }else{
  153.             free(anterior);
  154.         }
  155.     }else{
  156.         printf("\nEl tubo esta vacio\n\n");
  157.     }
  158. }
  159.  
  160. void imprimirPila(){
  161.     nodo* actual = (nodo*) malloc(sizeof(nodo));
  162.     actual = primero;
  163.  
  164.     if(primero != NULL){
  165.         while(actual != NULL) {
  166.             printf("\n | %d |", actual -> dato);
  167.             actual = actual -> siguiente;          
  168.         }
  169.         printf("\n _____");
  170.     }else{
  171.         printf("\nEl tubo esta vacio\n\n");
  172.     }
  173. }
Advertisement
RAW Paste Data Copied
Advertisement