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!