.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [c] cancellazione elementi selezionati (http://www.dsy.it/forum/showthread.php?threadid=21656)


Posted by maynard80 on 30-09-2005 18:27:

[c] cancellazione elementi selezionati

ragazzi scusate sono nel pallone, mi dite come cancellare gli elementi di una lista?

la liste è formata da nodi del tipo

struct nodo{
int x;
int y;
struct nodo *next;
}

voglio cancellare dalla lista tutti i nodi la cui x è n

nodo *cancellaSelezionati(*struct nodo head, int n);

storincoglionendo,pleaseee!

__________________
msn Messenger: giamma80 at tiscali.it
ATHENA !


Posted by Skilotto83 on 30-09-2005 19:39:

boh...metti il puntatore dell'elemento n-esimo della lista a null...
Una roba del genere...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by yeah on 30-09-2005 19:55:

code:
nodo *cancella_selezionati(struct nodo *head, int n) { struct nodo *found; while(head->next) if(head->next->x == n) { found = head->next; head->next = head->next->next; free(found); } return head; /* o cur... non so cosa possa essere più utile */ }


Due considerazioni:
- inizia il controllo dal secondo nodo in lista; questo è un problema derivante dal fatto che non ho ancora trovato un modo per gestire il primo elemento di una lista concatenata.
- non ritorna niente di utile, visto che può cancellare 0 o più nodi


Tutto questo assolutamente non testato :D

[edit] Manca qualcosa...
[edit2] Ora dovrebbe esserci tutto...
[edit3]No, ci sono degli errori...
[edit4]Ora dovrebbe essere a posto :)

__________________
?


Posted by DeepBlue on 30-09-2005 20:27:

queste slide potrebbero tornarti molto utili:

http://www.di.unipi.it/~gori/Inform...i/Lezione14.pdf

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by yeah on 01-10-2005 01:36:

Vedo che in quelle slide si usa la seconda delle due possibilità:
- oggetto 'finto': serve da testa della lista, non memorizza nessun valore;
- puntatore: la lista è iniziata da un puntatore

Personalmente il problema con il secondo tipo è che (primo esempio che mi viene in mente) nel caso:

[ptr] -> [el1] ->[el2]

per eliminare el1 bisogna tener conto del fatto che a sinistra c'è solo un puntatore e non un elemento completo.

Cmq rileggerò le slide con più attenzione :) Grazie

__________________
?


All times are GMT. The time now is 16:25.
Show all 5 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.