• Sábado 14 de Diciembre de 2024, 19:34

Autor Tema:  pilas  (Leído 1547 veces)

johndoe90

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
pilas
« en: Jueves 5 de Marzo de 2009, 23:22 »
0
Hola, estoy estudiando este interesante mundo de las pilas y colas.He hecho el siguiente programa que lee una secuencia de numeros y los devuelve al revés.
Adjunto el codigo en C para que me puedan decir si esta bien, en especial las funciones, 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 secuencian");
   scanf ("%d",&n);
   while (n!=0)
   {
      if (!pila_llena (mi_pila))
         pushpila (&mi_pila,n);
      else
         printf ("La pila ya está llenan");
      printf ("Escribe el siguiente número de la secuencian");
      scanf ("%d",&n);
   }
   printf("Ahora los números al revésn");
   while (!pila_vacia (mi_pila))
   {
      poppila(&mi_pila);
      printf ("%d",&n);
   }
}

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: pilas
« Respuesta #1 en: Viernes 6 de Marzo de 2009, 01:38 »
0
IMPORTANTE: utiliza las etiquetas de código.

Tu código parece estar bien, aunque no lo he ejecutado. Si te muestra los números al revés, entonces enhorabuena. Pero esto no es una pila propiamente dicha, ya que reservas toda la memoria y tienes un máximo establecido de elementos, con un vector/array/arreglo. Las pilas/colas suelen ser dinámicas, es decir, crecen y menguan con los elementos y por tanto no ocupan memoria innecesariamente (aunque por cada elemento ocupan más memoria que un vector).

Como cuestión de estética visual, aquí

Código: C
  1. printf ("%d",&n);
  2.  
deberías poner algo como

Código: C
  1. printf ("%d ",&n);
  2.  
para poder distinguir entre los elementos de la pila, porque si no te van a salir todos pegados.

¡Salud y república!