|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
|
[C] Problema con le liste
ciao, ho un piccolo problemino con le liste.
ho creato questo tipo di lista semplice di caratteri Codice:
typedef struct elemento {
char info;
struct elemento *next;
}Elemento;
typedef Elemento *Lista;
qualche dritta?
__________________
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Non la ho compilata e non sono perfettamente sicuro sia ANSI C, quindi non mi prendo nessuna responsabilità se ti fonderà la CPU ed espellerà i cd dai tuoi drive ottici a mo' di frisbee
.Comunque dovrebbe controllare se la lista è ordinata in modo crescente. Codice:
int isOrdered(Elemento* lista) {
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
|
ma la lista è di char...
__________________
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
+1 = lista ordinata in modo crescente -1 = lista ordinata in modo decrescente 0 = lista non ordinata o comunque con ordine non determinato (pensiamo ad una lista in cui ci sono, per ipotesi, tutte le informazioni uguali). Il procedimento da seguire per ottenere questo è il seguente. Alla funzione viene passato il puntatore alla 'root' della lista. Dentro la funzione è necessario avere 2 variabili, chiamiamole 'dir' e 'c'. Si fa la scansione dell'intera lista, per ogni elemento si verifica se esiste un elemento successivo. Se esiste un elemento successivo, si fa una comparazione delle due informazioni adiacenti. Se info1 > info2 si mette c=-1, se info1 < info2 si mette c=+1, altrimenti si mette c=0. A questo punto è necessario verificare se la comparazione "concorda" o meno con 'dir'. Se dir==0 e c != 0 si fa dir=c. Se invece sia 'dir' che 'c' sono diversi da 0 e non "concordano" (sono diversi), si fa immediatamente un return di 0. Si continua così con gli elementi successivi. Alla fine si fa ritornare 'dir'. Il risultato è appunto quello di ottenere un +1/-1/0 che indica l'ordinamento come spiegato all'inizio. Spero di aver spiegato in modo chiaro.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
|
Quote:
__________________
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Dec 2004
Città: Venezia
Messaggi: 192
|
grazie è già la seconda volta che mi aiuti!ciao!!!
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:55.











.
è già la seconda volta che mi aiuti!








