|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2010
Messaggi: 14
|
richiesta aiuto liste concatenate
![]() ![]() Ciao a tutti sto studiando le liste concatenate in vista di un esame e ho alcuni problemi che non riesco a chiarire ; mi potreste aiutare??? ho riscritto un software che inserisce caratteri in una sequenza , e vi posto alcune parti ; ===================================================================== #include <stdio.h> #include <stdlib.h> #include <string.h> struct listaNodi { char character; struct listaNodi *nextPtr; }; typedef struct listaNodi ListaNodi; typedef ListaNodi *ListNodePtr; void inserisci( ListNodePtr *sTesta, char value ); /* definisco un prototipo di funzione per inserire i caratteri */ int main( ) { ListaNodiPtr Testa = NULL ; char carattere; int risposta ; printf ("vuoi provare ?? digita 1 o 0 per uscire\n" ) ; scanf ("%d" , & risposta ) ; while ( risposta == 1 ) { inserisci( &Testa, carattere ); printf ("vuoi provare ancora ?? digita 1 o 0 per uscire\n" ) ; scanf ("%d" , & risposta ) ; } return 0; } void inserisci( ListNodePtr *sTesta, char value ) { ListaNodiPtr Nuovo; ListaNodiPtrCorrente; Nuovo = malloc( sizeof( ListaNodi ) ); if ( Nuovo != NULL ) { Nuovo->character = value; Nuovo->nextPtr = NULL; Precedente = NULL; Corrente = *sTesta; while (Corrente != NULL && value >Corrente->character ) { Precedente =Corrente; Corrente =Corrente->nextPtr; } if ( Precedente == NULL ) { Nuovo->nextPtr = *sTesta; *sTesta = Nuovo; } else { Precedente->nextPtr = Nuovo; Nuovo->nextPtr =Corrente; } } else { printf( "%c memoria non disponibile .\n", value ); } } ho alcune domande ; 1)non ho ho definito nessuna istanza della struttura "ListaNodi" , dove il compilatore trova i dati ? è un discorso analogo al dichiarare una stringa del tipo char *Ptr = " value" ; ?? cioè da qualche parte nella memoria crea una stringa ? qualora dichiarassi un puntatore di stringhe del tipo char *xxx [2] = { "vvvv" , "nnn" } ; come si può accedere ad ogni carattere di ogni singola stringa? 2)Corrente = *sTesta; che senso ha assegnare al puntatore corrente l'indirizzo di quello di testa ? 3) while (Corrente != NULL && value >Corrente->character ) .. ma corrente->character quando è stato inizializzato ? 4) che senso ha un espressione del tipo *testa =( *Testa ) -> carattere ; perchè le parentesi tonde? Grazie a tutti , l'argomento puntatori è molto difficile da recepire per me ![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:38.