• Viernes 8 de Noviembre de 2024, 16:05

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - JM100

Páginas: [1]
1
C/C++ / Listas En C
« en: Miércoles 13 de Junio de 2007, 19:19 »
Holaaa, Tengo unas dudas con pilas y colas en C, con el siguiente programa.

Se trata de una pila, no se como modificarlo para que sea el usuario el introduzca datos en la pila y luego mostrarselo por pantalla.

Y otra pregunta se podria hacer en una sola funcion ?.

gracias...


#include <stdlib.h>
#include <stdio.h>

typedef struct _nodo {
   int valor;
   struct _nodo *siguiente;
} tipoNodo;

typedef tipoNodo *pNodo;
typedef tipoNodo *Pila;
 

void Push(Pila *l, int v);
int Pop(Pila *l);
 
int main()
{
    int datos;
   Pila pila = NULL;
   pNodo p;
 
 scanf("%d",&pila);
   //Push(&pila, 20);
   Push(&pila, 10);
   Push(&pila, 40);
   Push(&pila, 30);

   printf("%d, ", Pop(&pila));
   printf("%d, ", Pop(&pila));
   printf("%d, ", Pop(&pila));
   printf("%d\n", Pop(&pila));

   system("PAUSE");
   return 0;
}

void Push(Pila *pila, int v)
{
   pNodo nuevo;
 
 
   nuevo = (pNodo)malloc(sizeof(tipoNodo));
   nuevo->valor = v;
   
   nuevo->siguiente = *pila;
   *pila = nuevo;
}

int Pop(Pila *pila)
{
   pNodo nodo; /* variable auxiliar para manipular nodo */
   int v;      /* variable auxiliar para retorno */
   
   /* Nodo apunta al primer elemento de la pila */
   nodo = *pila;
   if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
   /* Asignamos a pila toda la pila menos el primer elemento */
   *pila = nodo->siguiente;
   /* Guardamos el valor de retorno */
   v = nodo->valor;
   /* Borrar el nodo */
   free(nodo);
   return v;
}

Páginas: [1]