PDA

Visualizza la versione completa : [C] Algoritmo d'ordinamento su lista collegata


allalala
10-01-2011, 22:56
Questo è l'algoritmo d'ordinamento che sono riuscito a scrivere

x=lista;
y=x->next;
while(y!=NULL){
if(strcmp(x->stringa.a, y->stringa.a)>0){
z=x;
x=y;
y=z;}
y=y->next;}
solo che mi porta un problema, o meglio se una stringa di un elemento è "maggiore" dell'ultimo, quindi il cui puntatore è null, lo perdo...come posso risolvere questo problema??ho provato a scrivere qualcosa ma non risolvo nulla...

lolide
10-01-2011, 23:21
non s'è capita molto questa domanda.

Che intendi con " se una stringa di un elemento è "maggiore" dell'ultimo, quindi il cui puntatore è null, lo perdo" ?

allalala
10-01-2011, 23:28
per esempio se c'ho una lista di elemnti(array di caratteri) in questo ordine:
partita albero casa
quando il programma va ad eseguire la parola partita prima viene posto dopo albero e poi dopo casa...ma essendo casa l'ultimo elemento della lista, il suo puntatore essendo null non punterà all'elemento di "partita"...forse sono stato un pò troppo complicato??xD

Ippo343
11-01-2011, 08:35
E' sufficiente "ripristinare" il collegamento tra i due:



ultimo_elemento_lista->next = elemento_riordinato;


Capito?

allalala
11-01-2011, 12:10
non proprio xD
cioè come faccio a trovare elemento riordinato??dal punto di vista della scrittura del codice perchè come idea ho capito...

Loading