Hola, estoy estudiando este interesante tema de pilas y colas. He hecho un ejercicio que devuelve al revés una seria de numeros, me gustaria saber si esta bien, en especial las funciones. Adjunto el codigo en C. Gracias.
#include <stdio.h>
#define MAXPILA 5
typedef struct
{
	int pilavector[MAXPILA];
	int cimpila;
}Tpila;
void crear_pila(Tpila *pila)
{
	pila->cimpila=-1;
}
int pila_vacia(Tpila pila)
{
	if (pila.cimpila=-1)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int pila_llena(Tpila pila)
{
	return (pila.cimpila==MAXPILA-1);
}
void pushpila(Tpila *pila, int n)
{
	pila->pilavector [++pila->cimpila] = n;
}
int poppila(Tpila *pila)
{
	return pila->pilavector[pila->cimpila];
	pila->pilavector[--pila->cimpila];
}
void main ()
{
	Tpila mi_pila;
	int n;
	crear_pila (&mi_pila);
	printf ("Escribe el primer número de la secuencia\n");
	scanf ("%d",&n);
	while (n!=0)
	{
		if (!pila_llena (mi_pila))
			pushpila (&mi_pila,n);
		else
			printf ("La pila ya está llena\n");
		printf ("Escribe el siguiente número de la secuencia\n");
		scanf ("%d",&n);
	}
	printf("Ahora los números al revés\n");
	while (!pila_vacia (mi_pila))
	{
		poppila(&mi_pila);
		printf ("%d",&n);
	}
}
Tengo otra duda, para meter matrices de este tipo en una pila como podria ser? Adjunto la siguiente estructura con la que trabajo.
#include<stdio.h>
#define MAXF 5
#define MAXC 5
#define MAXP 20
#define MAXD 10
#define MAXPILA 5
typedef char Tpalabra[MAXP];
typedef char Tcarnet[MAXD];
typedef struct
{
	Tpalabra nombre;
	int edad;
	Tcarnet dni;
}Tpersona;
typedef struct
{
	Tpersona persona[MAXF][MAXC];
	float porciento;
	Tpalabra id;
}Ttren;
typedef struct
{
	int pilavector [MAXPILA];
	int cimpila;
}Tpila;
Gracias.
			
		

