PDA

View Full Version : Aiutatemi a risolvere questo problema in C


kurt7
13-11-2009, 10:23
Salve a tutti. Premetto che uso Visual c++ 6 poichè è il compilatore che si usa all' università, ho un problema abbastanza banale ma a cui non riesco a trovare una soluzione. Devo implementare una lista circolare e quindi ho dichiarato un nuovo tipo chiamato "nodo" che è una struttura contenente 2 campi, il campo "inf" e il campo "next". Il compilatore mi da questo errore
Codice:

error C2275: 'pnodo' : illegal use of this type as an expression
see declaration of 'pnodo'

non capisco il perchè. Il codice completo è il seguente:
Codice:

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

typedef struct nodo *pnodo;
struct nodo
{ int inf;
pnodo next;
};

main()
{ int i, N, M;
printf("Inserisci la dimensione della lista: ");
scanf("%d",&N);
printf("Digita ogni quanti nodi eliminarne uno: ");
scanf("%d",&M);

pnodo p=(pnodo)malloc(sizeof(struct nodo)); <------- ERRORE!!!
// DA QUI IN POI IL CODICE POTREBBE ESSERE ERRATO MA NON HA IMPORTANZA
pnodo x=p;
p->inf=1;
p->next=t;
for (i=2; i<=N; i++)
{ x->next=malloc(sizeof *p);
x=x->next;
x->inf=i;
x->next=p;
}
while ( x != x->next)
{ for (i=1; i<M; i++)
x=x->next;
x->next = x->next->next;
N--;
}
printf("\n%d\n", x->inf);
}

la dichiarazione di typedef e della struttura nodo dovrebbero essere giuste poichè scritte dal mio professore universitario a lezione, inoltre è del tutto analoga ad un esempio trovato in un libro. Non capisco dov'è l' errore, qualcuno può aiutarmi perfavore

ndakota
13-11-2009, 11:56
Forse, ma non sono affatto sicuro, devi banalmente spostare il typedef dopo la dichiarazione della struttura nodo.

kurt7
13-11-2009, 11:59
Già provato, stessi errori

ndakota
13-11-2009, 12:07
Strano comunque. Io uso Codeblocks con minGw e lo compila il tuo.

EDIT: ho solo definito il main con 'int main', messo un return 0 prima della graffa finale e commentato tutto quello che non serviva.