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
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

GIMLI_AT_WAR
Nuovo Utente



Inserito il - 24/05/2004 : 12:32:01  Mostra Profilo  Visita l'Homepage di GIMLI_AT_WAR Invia a GIMLI_AT_WAR un Messaggio Privato  Rispondi Quotando
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;
}
}

Iddqd
Arbiter Musicae

Apple


Regione: Puglia
Prov.: Foggia


Inserito il - 24/05/2004 : 13:59:02  Mostra Profilo  Visita l'Homepage di Iddqd Invia a Iddqd un Messaggio Privato  Rispondi Quotando
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).

2.0211 If the world had no substance, then whether a proposition had sense
would depend on whether another proposition was true.
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,19 secondi.

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