Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 [HELP] lista in c

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
GIMLI_AT_WAR Inserito il - 24/05/2004 : 12:32:01
ciao ragazzi
chi mi aiuta a capire questo listato,magari commentandomi i passaggi poco chiari
si tratta di una lista in c.



#varie inclusioni

struct el_lista {
int dato;
struct el_lista *el_succ;
};
typedef struct el_lista *Elem; //ok un nuovo tipo di puntatore
// a struttura

int stampa_lista(Elem);
Elem add_el(void);


main() {
Elem lista = NULL, new_el, last_el; // COSA DIO STA FACENDO QUI???
// dichiara una istanza del
// tipo ELEM di nome LISTA e la
// assegna a tre variabili??HELP!
do {
if ((new_el = add_el()) != NULL) {
if (lista == NULL) lista = new_el;
else (*last_el).el_succ = new_el;
last_el = new_el;
}
} while (new_el != NULL);
stampa_lista(lista);
system("PAUSE"); return 0; }


Elem add_el(void) {
int i=0; Elem new_el;
printf("Inserisci un intero positivo: ");
scanf("%d",&i); printf("\n");
if (i > 0) {
new_el =
(Elem)malloc(sizeof(struct el_lista));
(*new_el).dato = i;
(*new_el).el_succ = NULL;
return new_el;}
else return NULL;}


int stampa_lista(Elem last_el) {
printf("\nLa lista inserita è:\n");
while(last_el != NULL) {
printf("%i\n",(*last_el).dato);
last_el = (*last_el).el_succ;
}
}
1   U L T I M E    R I S P O S T E    (in alto le più recenti)
Iddqd Inserito il - 24/05/2004 : 13:59:02
Citazione:
Messaggio inserito da GIMLI_AT_WAR

ciao ragazzi
chi mi aiuta a capire questo listato,magari commentandomi i passaggi poco chiari
si tratta di una lista in c.



//Vediamo un po':

struct el_lista {
int dato;
struct el_lista *el_succ;
};

typedef struct el_lista *Elem;
//ok un nuovo tipo di puntatore a struttura

int stampa_lista(Elem);
Elem add_el(void);

main()
{
Elem lista = NULL, new_el, last_el;

// COSA DIO STA FACENDO QUI???
// dichiara una istanza del
// tipo ELEM di nome LISTA e la
// assegna a tre variabili??HELP!

/* No, dichiara tre variabili di tipo "Elem" e ne inizializza una a NULL. In breve quella scrittura è equivalente a:
struct el_lista *lista = NULL;
struct el_lista *new_el;
struct el_lista *last_el;
*/


do
{
if ((new_el = add_el()) != NULL)
{
if (lista == NULL) lista = new_el;
else (*last_el).el_succ = new_el;

/*
Qui per comodità si può usare la forma:
nome_punt_strutt->elemento;
Che è equivalente a
(*nome_punt_strutt).elemento;
*/


last_el = new_el;
}
} while (new_el != NULL);
stampa_lista(lista);
return 0;
}


Elem add_el(void)
{
int i=0; // Credo che questa inizializzazione a 0 sia superflua.
Elem new_el;

printf("Inserisci un intero positivo: ");
scanf("%d",&i);
printf("\n");

if (i > 0)
{
new_el = (Elem)malloc(sizeof(struct el_lista));
(*new_el).dato = i;
(*new_el).el_succ = NULL;

return new_el;
}
else
return NULL;
}



int stampa_lista(Elem last_el) {
printf("\nLa lista inserita è:\n");
while(last_el != NULL) {
printf("%i\n",(*last_el).dato);
last_el = (*last_el).el_succ;
}
}

/* Questa magica funzione non restituisce alcun valore... E in effetti non si spiega come mai è dichiarata come int e non void.*/

Comunque si tratta di un programmino che legge degli interi, li memorizza in una struttura concatenata e, quando viene inserito un qualche oscuro valore minore o uguale a 0, esce dopo aver stampato tutti i valori inseriti.
La cosa che lascia perplessi è che non disalloca la memoria occupata.
Comunque in ogni caso ti consiglio:

while(!sonochiari(alcuni_punti, GIMLI_AT_WAR))
{
nonesitare();
post_forum(alcuni_punti);

while(!qualcuno_risponde_sul_forum) DoNothing();

Leggi_risposta();
}

E speriamo che sonochiari(alcuni_punti, iddqd).

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,07 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000