PDA

Visualizza la versione completa : Invertire primo nodo con il terzo della lista?


number
22-04-2010, 18:38
Ciao a tutti, Ho una lista lineare sulla quale devo effettuare questa opearzione: Invertire il terzo nodo della lista con il primo...Mi spiego mettiamo la lista sia 1->2->3->4
dovrei avere 3->2->1->4...Qualkuno puo aiutarmi...??Grazie...

antotan
22-04-2010, 19:06
fai diventare 3 il nodo head. fai puntare 3.next a 1.next, 1.next a 3.next, 3.prev.next a 1.next (se la lista concatenata doppiamente, cio se hai il campo prev) oppure devi necessariamente conoscere anche 2 (comunque 2 = 1.next), a quel punto fai 2.next = 1.
Ovviamente devi aiutarti con variabili d'appoggio per gli scambi.

Molto pi semplice a farlo che a dirlo. Disegna lo schema su un foglio di carta e muovi le frecce, ci arrivi in un niente

:ciauz:

number
22-04-2010, 19:14
Sikkome sono nuovo del forum potresti postarmi tv la realizzazione...??Grazie..Inoltre il next sta per il puntatore al nodo successivo??...Grazie tante
Inoltre la lista non circolare..

antotan
22-04-2010, 19:25
Mi spiace ma mi manca il tempo adesso.
Prova a realizzare almeno una bozza dell'algoritmo da solo, seguendo le istruzioni che ti ho dato, e postalo.

S, next il puntatore al nodo successivo
No, non parlavo di liste circolari, ma di liste concatenate doppiamente. Comunque un altro discorso, se l'esercizio scambiare 1 con 3, allora puoi evitare di soffermarti sulla questione di scambio di due nodi qualsiasi.

Ti consiglio di procedere da solo, ma se proprio non ti va, "swap nodes list" come chiave di ricerca su google ti dar diversi risultati credo.

:ciauz:

number
22-04-2010, 19:46
Potresti modicarmi il codice ke mi hai messo facendo riferimento anke a 2..??Nn c' il campo prev..Grazie..

antotan
22-04-2010, 19:54
comunque 2 = 1.next


voglio dire che 2 lo conosci gia. infatti 2 1.next (ovviamente prima che fai questo: 1.next = 3.next).



a quel punto fai 2.next = 1


con questo voglio dire



node due = 1.next;
due.next = uno // uno il nodo 1



Fai attenzione all'ordine degli scambi e a come usi le variabili di appoggio durante lo scambio

:ciauz:

Loading