• Domingo 15 de Diciembre de 2024, 10:47

Autor Tema:  Listas En C  (Leído 881 veces)

JM100

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Listas En C
« en: Miércoles 13 de Junio de 2007, 19:19 »
0
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;
}

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Listas En C
« Respuesta #1 en: Miércoles 13 de Junio de 2007, 22:27 »
0
Que te parece usando un scanf...?
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.