• Lunes 20 de Mayo de 2024, 14:49

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - m3t4l3ro

Páginas: [1]
1
C/C++ / duda sobre listas anidadas y pilas
« en: Lunes 14 de Junio de 2010, 04:05 »
Hola gente, tengo una duda estoy programando una tarea pa mañana y no se que es lo que pasa con un error.

el programa crea un numero de pilas con un numero de items a apilar dado por el usuario, estas pilas las quiero meter en una lista dinamica, para tener pila1->pila2->....
implemente por separado la funcion para crear las pilas, y dentro de ella, llame a la funcion para crear la lista, le paso la pila y me crea un nodo

este es el codigo completo:

#include<stdio.h>
#include<stdlib.h>
#include <time.h>

FILE *dat;
typedef struct pila{
int codigo;
char nombre[20];
struct pila *sig;
}*PILA;


typedef struct NODO{
PILA *pila;
struct NODO *next;
};


NODO * CrearLista(PILA*,NODO*);
NODO * push(PILA *, NODO *);
void MostrarLista(NODO*);












main(){
int n,m,i;
PILA p=NULL;
NODO *head=NULL;

dat=fopen("containers.txt", "r");
printf("Ingrese el numero de Pilas : ");
scanf("%d", &m);
system("cls");
printf("Ingrese el tamaño de las Pilas : ");
scanf("%d", &n);

for(i=0;i<m;i++)
head=push(&p,head);

if(!fclose(dat))
printf( "n<Fichero datos_secadoras.txt cerrado>n" );
else
{
printf( "n<Error: datos_secadoras.txt NO CERRADO>n" );
}


MostrarLista(head);
system("pause");


}

NODO * push(PILA *pila, NODO *head)
{
PILA aux;

aux = (PILA) malloc(sizeof(struct pila));
aux->sig = NULL;

if(pila == NULL)
{
aux->codigo = rand();
fscanf( dat, "%sn", &aux->nombre);
*pila = aux;
printf("entro");
}
else
{
aux->codigo = rand();
fscanf( dat, "%sn", &aux->nombre);
aux->sig = *pila;
*pila = aux;
}

head=CrearLista(pila,head);

}

NODO * CrearLista(PILA *pila,NODO *head)
{


NODO *p,*r;
p=head;
if(head==NULL)
{
p=new(NODO);
head=p;
p->pila=pila;
p->next=NULL;


}else {while(p->next!=NULL)
p=p->next;

r=new(NODO);
p->pila=pila;
p->next=r;
r->next=NULL;

}

return(head);

}


void MostrarLista(NODO *head)
{

int i=0;
NODO *p;
p=head;

while(p!=NULL)
{printf("%dn%snn", p->pila.codigo, p->pila.nombre);
p=p->next;}
printf("NULLnn");
}









el error me lo da en la funcion MostrarLista

en la linea {printf("%dn%snn", p->pila.codigo, p->pila.nombre);


y el error que me da es

1ro:
`codigo' has not been declared

2do

request for member of non-aggregate type before ',' token



no se que pasa, debe ser error de puntos, y flechas,, o quizas es con (*p)->pila
no se
alguien que me ayude porfa es pa mañana la tarea y es solo una parte de ella..


saludos!

Páginas: [1]