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.