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