• Jueves 9 de Mayo de 2024, 02:30

Autor Tema:  Pilas Y El Manejo De Estructuras  (Leído 906 veces)

nakp

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Pilas Y El Manejo De Estructuras
« en: Jueves 22 de Mayo de 2008, 17:39 »
0
tengo un problema con unas estructura, intento hacer una pila de pilas de pilas (estas ultimas estáticas)

les dejo el codigo y talvez alguien puede ayudarme a corregirlo... o a optimizarlo xD porque no puedo hacer el maldito push (que es condicional)

Esta es la estructura del dato:

Código: Text
  1. typedef struct tm t_fecha; // tipo de dato - fecha
  2. typedef t_fecha *ptfecha; // puntero de tipo de dato - fecha
  3.  
  4. typedef struct {
  5.   int top;
  6.   ptfecha cajas[12];
  7. } t_pcajas; // tipo de dato - pila de cajas
  8.  
  9. typedef t_pcajas *pt_pcajas; // puntero de tipo de dato - pila de cajas
  10.  
  11. typedef struct n_pcajas{
  12.   pt_pcajas p_cajas;
  13.   n_pcajas *sig_pcajas;
  14. } t_ppcajas; // tipo de dato - pila de pilas de cajas
  15.  
  16. typedef t_ppcajas *pt_ppcajas; // puntero de tipo de dato - pila de pilas de cajas
  17.  
  18. typedef struct n_lote{
  19.   pt_ppcajas p_pcajas[3];   // 3 pilas de pilas de cajas, una por marca
  20.   float precio_pcajas; // precio por caja del lote
  21.   int a_fab; // año de fabricacion
  22.   n_lote *sig_lote;
  23. } t_plotes; // tipo de dato - pila de lotes
  24.  
  25. typedef t_plotes *pt_plotes; // puntero de tipo de dato - pila de lotes
  26.  

y el push en el que me he trabado es este:

Código: Text
  1. void push(pt_plotes pl, ptfecha f, int año, int marca){
  2.   pt_ppcajas itemp;
  3.   if(anio_e(pl,año)){ // comprueba si el año existe
  4.     if(full(pl,marca)){ // comprueba si la pila de cajas esta llena
  5.       itemp=(pt_ppcajas)malloc(sizeof(t_ppcajas));
  6.       itemp->p_pcajas[marca]->sig_pcajas=pl->p_pcajas[marca]->p_cajas;
  7.       pl->p_pcajas[marca]->p_cajas=itemp;
  8.       pl->p_pcajas[marca]->p_cajas->top=-1;
  9.       (pl->p_pcajas[marca]->p_cajas->cajas[++top])=f;
  10.     }
  11.     else{
  12.       (pl->p_pcajas[marca]->p_cajas->cajas[++top])=f;
  13.     }
  14.   }
  15.   else
  16.     (pl->p_pcajas[marca]->p_cajas->cajas[++top])=f;
  17. }
  18.  

las funciones que llama el push funcionan correctamente.

por cierto... he definido un montón de veces cada estructura porque la pila debe manejarlo como puntero verdad?

agrego:

En un principio (en main) defino la pila (de pilas de pilas xD) así:
Código: Text
  1.  
  2.   t_plotes pila;
  3.   pt_plotes ppila=&pila;
  4.  

Pero no sé si sería mejor hacer cada pila por separado, y si debo definir cada sub-pila en el main.

alguien puede hecharme un cable para manejar esta pila porque no me sale nada de nada jeje

Salu2 y gracias de antemano!