PDA

Visualizza la versione completa : [C] puntatori di liste concatenate


maninblack
04-02-2005, 11:07
ciao..ho implementato una struttura "lista di lista" , ma la creazione e l'inserimento dei nodi nelle sottoliste nn funziona.Nella lista principale invece si.
Io accedo alle mie sottoliste con l'istruzione "i->p->word" x esempio x leggere la word dal primo nodo della sottolista. Mentre x spostarmi in essa eseguo "i->p->next".
Dove:
index *i=inizioI;
parola *p=inizioP;

queste sono le strutture ke utilizzo e i puntatori: per favore ki mi aiuta?????ne ho assolutamente bisogno!!!

typedef struct _parola
{
int flagMist;
char word[MAXSTRING];
struct _parola *next;
struct _parola *prev;

}parola;

//struttura della lista principale
typedef struct _index
{
int flagMistI;
char wordI[MAXSTRING];
parola *p;
struct _index *next;
struct _index *prev;

}index;

typedef index index1; //definizione della seconda lista principale
typedef parola parola1; //definizione della seconda struttura per le sottoliste

index *inizioI=NULL; //puntatore all'inizio della prima lista principale

parola *inizioP=NULL; //puntatore all'inizio della prima struttura lista di liste

index1 *inizioI1=NULL; //puntatore all'inizio della seconda lista principale

parola1 *inizioP1=NULL; //puntatore all'inizio della seconda
struttura lista di liste

anx721
04-02-2005, 13:58
bhe visto che le strutture della lista principale e della sottolista sono uguali dovresti usre una funzione simile per l'inserimento nelle due liste; che inserimento devi fare? In testa? In coda? Inserimento ordinato? Dov' il codice?

maninblack
04-02-2005, 14:50
ho risolto il problema..pero' ti devo kiedere un'altra cosa.
Se durante l'esecuzione del mio programma vogli ricreare la lista appena creata come la disalloco? Non un nodo ma tutta quanta la struttura?

anx721
04-02-2005, 14:58
per disallocare una lista:

tipolista* tmp = lista;
tipolista* tmp;
while(lista!= NULL){
tmp = lista;
lista = lista -> next;
free(tmp);
}

maninblack
04-02-2005, 15:03
t ringrazio

Loading