Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- Aiutooooo (http://www.dsy.it/forum/showthread.php?threadid=36266)
Aiutooooo
Ragazzi mi sono incasinato su una cavolata incredibile....
come faccio a sapere se una lista è vuota???Vi faccio capire
ho usato una lista doppiamente puntata e questa condizione mi incasina tutto.....
if (nuovo->relazioni_colore == NULL)
potete aiutarmi???
cambiare ttt in liste unidirezionali è troppo lungo..
per favore aiuto.....
scusa, se hai una lista bidirezionale o monodirezionale se la lista è vuota vuol dire che la lista è null, non ha senso nelle liste lasciare l'elemento che non contiene nulla....
__________________
La Fede non retrocede mai!
Döma Atalanta!!!!!!!!
giusto scusa....non mi sn spiegato bene...la lista è relazione_colore...che è contenuta in un'altro oggetto..
non capisco....
hai una lista che si chiama relazione_colore, all'interno che c'è?
Da come vedo io hai una lista che si chiama nuovo, ed al suo interno hai relazione_colore (cosa indica?)
__________________
La Fede non retrocede mai!
Döma Atalanta!!!!!!!!
no no la lista è relazione_colore l'altro è una struttura diversa.
guarda le operazioni che ho usato per creare e inserire nelle liste sono:
lista_colori *createlist(void)
{
lista_colori *q = malloc(sizeof(lista_colori));
if(!q) {
fprintf(stderr,"Errore di allocazione nella creazione della lista\n");
exit(-1);
};
q->next = q->prev = q;
return q;
}
/* inserisce un elemento in testa alla lista */
void *insert(lista_colori *p,colore *colore_relazione)
{
lista_colori *q = malloc(sizeof(lista_colori));
if(!q) {
fprintf(stderr,"Errore nell'allocazione del nuovo elemento\n");
exit(-1);
};
q->colore_lista = colore_relazione;
q->next = p->next;
p->next->prev = q;
p->next = q;
q->prev = p;
}
come faccio a capire se la lista è vuota?
questa cosa non mi convince...
q->next = q->prev = q;
vuol dire che next e prev puntano entrambe a q.....
io avrei fatto
q->next = q->prev = NULL
devi tenere un puntatore alla testa della lista e ogni elemento va aggiunto alla testa della linea, in questo modo potrai fare
dopo la calloc di q
//questo mi opare di capire che è il dato
q->colore_lista = colore_relazione;
q-> next = testadellalista;
q-> prev = NULL;
testadellalista-> prev = q;
//risistemo la testa della lista
teststadellalista = q;
a questo punto, per sapere se la lista è vuota, devi testare la testa
if (testadellalista == NULL){
listavuota;
}else{
lista piena (ho almeno un elemento
}
__________________
La Fede non retrocede mai!
Döma Atalanta!!!!!!!!
mettiamo che ho dichiarato...
lista_colori *_listaColori;
la condizione per sapere se la tua lista è vuota è la seguente:
if ( _listaColori->succ == _listaColori )      printf ("La lista è vuota");
else      printf ("La lista contiene elementi");
cmq se guardi nei vecchi progetti (tra i quali quello che ho fatto io) trovi degli esempi pratici sulle liste.
ciao.
DS
__________________
by Ð@rk§h@ÐØw
grazie mille a entrambi!!
All times are GMT. The time now is 18:45. | Show all 8 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.