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;
}