Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Emily en 31 Enero 2019, 06:10 am



Título: Duda con programa de Pilas
Publicado por: Emily en 31 Enero 2019, 06:10 am
Tengo este avance de mi programa

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4.  
  5. typedef struct _Nodo{
  6.        int dato;
  7.        struct _Nodo *sig;
  8. }Nodo;
  9.  
  10. Nodo *reservarmemoria(int dato){
  11.     Nodo *espacio;
  12.     espacio = (Nodo*) malloc(sizeof(Nodo));
  13.     if(espacio != NULL){
  14.                printf("Error");                
  15.     }else{
  16.           espacio -> dato = dato;
  17.           espacio -> sig = NULL;
  18.           return espacio;
  19.     }
  20. }
  21.  
  22. Nodo *alta(int dato, Nodo *cima){
  23.     Nodo *box;
  24.     box = reservarmemoria(dato);
  25.     if (cima != NULL){
  26.              box -> sig = cima;
  27.     }
  28.     return box;
  29. }
  30.  
  31. Nodo *baja (Nodo *cima){
  32.     Nodo *aux;
  33.     if (cima != NULL){
  34.              aux = cima;
  35.              cima = aux -> sig;
  36.              free(aux);
  37.     }
  38.     return cima;
  39. }
  40.  
  41. void mostrar (Nodo *cima){
  42.     if (cima == NULL){
  43.              printf ("\n No hay nodos");              
  44.     }else{
  45.           while (cima != NULL){
  46.                 printf ("Elemento %d\n", cima -> dato);
  47.                 cima = cima -> sig;
  48.           }
  49.     }
  50. }
  51.  
  52. void tamano (Nodo *cima){
  53.     int i=0;
  54.     if (cima == NULL){
  55.              printf ("\n No hay nodos");              
  56.     }else{
  57.           while (cima != NULL){
  58.                 cima = cima -> sig;
  59.                 i++;
  60.           }
  61.           printf ("El tamaño es: %d\n", i);
  62.     }
  63. }
  64.  
  65. int main(){
  66.    int op,dato;
  67.    printf ("1.-Dar de alta un Nodo\n2.-Dar de baja un Nodo\n3.-Mostrar todos los Nodos\n4.-Mostrar el tamaño\n5.-Salir\n");
  68.    scanf ("\n%d", &op);
  69.    do{
  70.          switch (op){
  71.                 case 1:
  72.                       printf ("Alta\nIntrodusca el numero a guardar en el nodo\n");
  73.                       scanf ("%d\n", &dato);
  74.                       alta(dato,);                                                                    
  75.                 break;
  76.                 case 2:
  77.                      printf("Baja\n");
  78.                      baja(cima);
  79.                 break;
  80.                 case 3:
  81.                      mostrar(cima);
  82.                 break;
  83.  
  84.          }
  85.  
  86.    }while(op !=5);
  87.    return 0;
  88. }

Se que tengo que insertar una nueva estructura en el main que va a ser la que mande a cima pero no se de que manera hacerlo me preguntaba si alguien podría asesorarme


Título: Re: Duda con programa de Pilas
Publicado por: K-YreX en 2 Febrero 2019, 15:12 pm
Citar
Se que tengo que insertar una nueva estructura en el main que va a ser la que mande a cima
No sé a qué te refieres con esto. Si puedes explicarte un poco... :-X


Título: Re: Duda con programa de Pilas
Publicado por: Emily en 3 Febrero 2019, 08:25 am
Ya logre resolver mi duda con el programa
si a alguien le sirve el codigo, aqui lo dejo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5.  
  6.    typedef struct Nodo
  7.    {
  8.        int Dato;
  9.        struct Nodo *sig;
  10.    }Nodo;
  11.  
  12.  
  13. Nodo *Crear (int);
  14. Nodo *Alta (int, Nodo *top);
  15. Nodo *Baja (Nodo *top);
  16. void Mostrar(Nodo *top);
  17. void Contar (Nodo *top);
  18.  
  19. int main(){
  20.    struct Nodo *Pila;
  21.    Pila=NULL;
  22.    int Op=1,dato,o,size;
  23.    do {
  24.    printf ("¿Que desea hacer?\n1:Añadir valor\n2:Mostrar valores\n3:Eliminar nodo\n4:Contar nodos\n5:Salir\n");
  25.    scanf ("%d",&Op);
  26.    switch (Op){
  27.        case 1:
  28.                printf ("\n\tIngrese el valor:");
  29.                scanf ("%d",&dato);
  30.                Pila=Alta(dato,Pila);
  31.                system("cls");
  32.                break;
  33.        case 2:
  34.                Mostrar(Pila);
  35.                system("pause");
  36.                system("cls");
  37.  
  38.                break;
  39.        case 3:
  40.                Pila=Baja(Pila);
  41.                system("cls");
  42.                break;
  43.        case 4:
  44.                Contar(Pila);
  45.                system("pause");
  46.                system("cls");
  47.                break;
  48.        case 5:
  49.         break;
  50.  
  51.        default :
  52.        printf( "\nOpcion incorrecta.\n" );
  53.                }
  54.  
  55.  
  56.        }while (Op!=5);
  57.        }
  58.  
  59.  
  60. Nodo *Crear (int dato){
  61.  
  62.            Nodo *espacio;
  63.            espacio=(Nodo*)malloc(sizeof(Nodo));
  64.  
  65.  
  66.                espacio->Dato=dato;
  67.  
  68.                espacio->sig=NULL;
  69.  
  70.                return espacio;
  71.  
  72. }
  73.  
  74.  
  75. Nodo *Alta (int dato,Nodo *top)
  76. {
  77.    Nodo *box;
  78.    box=Crear(dato);
  79.        if (top==NULL){
  80.            top=box;
  81.        }
  82.        else
  83.        {
  84.            box->sig=top;
  85.            top=box;
  86.        }
  87.        return top;
  88. }
  89.  
  90. Nodo *Baja (Nodo* top){
  91.    Nodo *aux;
  92.    if (top==NULL)
  93.    {
  94.        return 0;
  95.    }
  96.    else {
  97.  
  98.        aux=top;
  99.        top=aux->sig;
  100.        free (aux);
  101.        return top;
  102.    }
  103. }
  104.  
  105. void Mostrar (Nodo *top){
  106.    if(top==NULL)
  107.    {
  108.        printf ("\nNo hay ningun dato\n");
  109.    }
  110.    else {
  111.  
  112.        while (top!=NULL)
  113.        {
  114.            printf ("\n| %d |\n ___  ",top->Dato);
  115.            top=top->sig;
  116.        }
  117.        printf("\n");
  118.    }
  119.  
  120. }
  121.  
  122. void Contar (Nodo *top){
  123.    int Cont=0;
  124.    if(top==NULL)
  125.    {
  126.        printf ("No hay nada\n");
  127.    }
  128.    else {
  129.        while (top!=NULL)
  130.        {
  131.            Cont=Cont+1;
  132.            top=top->sig;
  133.        }
  134.        printf("El tamaño es: %d\n",Cont);
  135.    }
  136. }