totipianurese (Member)
Pro
Messaggi: 168
Iscritto: 24/06/2008
|
Ciao raga, non so come fare per far stampare infine i nodi caricati:
Codice sorgente - presumibilmente C# |
#include <iostream> //provaaaaaaaaaaaaaaa using namespace std; int i; int main() { struct Alunno { string nome; string cognome; int eta; struct Alunno *next; }; Alunno pAlunno; cout << "Inserisci il nome" << endl; cin >> pAlunno.nome; cout << "Inserisci il cognome" << endl; cin >> pAlunno.cognome; cout << "Inserisci l'eta'" << endl; cin >> pAlunno.eta; Alunno qAlunno; i=1; do { cout << "Inserisci il nome" << endl; cin >> qAlunno.nome; cout << "Inserisci il cognome" << endl; cin >> qAlunno.cognome; cout << "Inserisci l'eta'" << endl; cin >> qAlunno.eta; i++; } while(i<3); system("pause"); }
|
Mi potete aiutare???
|
|
totipianurese (Member)
Pro
Messaggi: 168
Iscritto: 24/06/2008
|
Sono arrivato a ciò, correggetemi se ho commesso qualke errore (cmq il programma si compila, io mi chiedo solo se ho creato così due nodi concatenati).
Codice sorgente - presumibilmente C# |
#include <iostream> //provaaaaaaaaaaaaaaa using namespace std; int i; int main() { struct Alunno { string nome; string cognome; int eta; struct Alunno *next; }; Alunno uno; cout << "Inserisci il nome" << endl; cin >> uno.nome; cout << "Inserisci il cognome" << endl; cin >> uno.cognome; cout << "Inserisci l'eta'" << endl; cin >> uno.eta; Alunno due; cout << "Inserisci il nome" << endl; cin >> due.nome; cout << "Inserisci il cognome" << endl; cin >> due.cognome; cout << "Inserisci l'eta'" << endl; cin >> due.eta; uno.next =&due; system("pause"); }
|
|
|
Lego86 (Member)
Rookie
Messaggi: 30
Iscritto: 04/10/2008
|
Ho esattamente lo stesso problema, il fatto è che i miei professori di informatica sono quasi ebeti, come se i puntatori li avessero fatti sempre e solo in pascal, ma poi in tutto il mondo ci sono esempi di 10000 strutture diverse trane le liste, e non so più dove sbattere la testa.. please aiuto!
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da totipianurese:
Sono arrivato a ciò, correggetemi se ho commesso qualke errore (cmq il programma si compila, io mi chiedo solo se ho creato così due nodi concatenati).
Codice sorgente - presumibilmente C# |
#include <iostream> //provaaaaaaaaaaaaaaa using namespace std; int i; int main() { struct Alunno { string nome; string cognome; int eta; struct Alunno *next; }; Alunno uno; cout << "Inserisci il nome" << endl; cin >> uno.nome; cout << "Inserisci il cognome" << endl; cin >> uno.cognome; cout << "Inserisci l'eta'" << endl; cin >> uno.eta; Alunno due; cout << "Inserisci il nome" << endl; cin >> due.nome; cout << "Inserisci il cognome" << endl; cin >> due.cognome; cout << "Inserisci l'eta'" << endl; cin >> due.eta; uno.next =&due; system("pause"); }
|
|
nel codice che hai scritto tu è praticamente inutile nella struct dichiarare
struct Alunno *next;
|
|
Lego86 (Member)
Rookie
Messaggi: 30
Iscritto: 04/10/2008
|
Capito, ma è mai possibile che in tutto il sito (o direi addirittura in tutta internet) non ci sia un esempio di lista a puntatori in c++? Please se le sapete fare caricatene uno!
Ultima modifica effettuata da Lego86 il 17/11/2008 alle 13:24 |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da Lego86:
Capito, ma è mai possibile che in tutto il sito (o direi addirittura in tutta internet) non ci sia un esempio di lista a puntatori in c++? Please se le sapete fare caricatene uno! |
devi usare un puntatore a puntatore:
Codice sorgente - presumibilmente C++ |
#define NUM_ELE 10 // numero dei puntatori dell'array int **array; *array=(int *)malloc(NUM_ELE); for (int i=0;i<NUM_ELE;i++) { array[i]=(int *)malloc(sizeof(int)); } [...] for (int i=0;i<NUM_ELE;i++) { free(array[i]); } free(array);
|
Ultima modifica effettuata da il 23/11/2008 alle 16:26 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Non ho ben capito ancora cosa volete capire... la domanda iniziale del topic era "come stampare la lista", ma vedo che c'è un po' di confusione anche su altre cose... cosa dovete fare? Una lista collegata (linked list, ugh che brutto dirlo in italiano) di alunni?
Ultima modifica effettuata da pierotofy il 25/11/2008 alle 0:08
|
|
totipianurese (Member)
Pro
Messaggi: 168
Iscritto: 24/06/2008
|
Si, dovrei creare e stampare una lista collegata di N alunni.
Ecco il nuovo CODICE, però ci sono degli errori.
Codice sorgente - presumibilmente C# |
#include <iostream> using namespace std; int *x,i,k,y; int main() { i=0; y=1; struct lista { string nome; string cognome; int eta; struct lista *punt; }; cout << "Inserisci il numero di nodi da creare (min 3) = "; cin >>k; lista p; cout <<y<< ") Inserisci il nome = "; cin >> p.nome; cout <<y<< ") Inserisci il cognome = "; cin >> p.cognome; cout <<y<< ") Inserisci l'eta = "; cin >> p.eta; lista q; p.punt =&q; y++; cout <<y<< ") Inserisci il nome = "; cin >> q.nome; cout <<y<< ") Inserisci il cognome = "; cin >> q.cognome; cout <<y<< ") Inserisci l'eta = "; cin >> q.eta; x=q.punt; //qui c'è l'errore do { lista r; r=&x; //qui c'è l'errore x=r.punt; // qui c'è l'errore y++; cout <<y<< ") Inserisci il nome = "; cin >> r.nome; cout <<y<< ") Inserisci il cognome = "; cin >> r.cognome; cout <<y<< ") Inserisci l'eta = "; cin >> r.eta; } while(y+1<k); cout<<"STAMPA:"<<endl; while (p.punt!=NULL) { cout<<p.nome<<endl; cout<<p.cognome<<endl; cout<<p.eta<<endl; p=*p.punt; } system("pause"); }
|
Ultima modifica effettuata da totipianurese il 25/11/2008 alle 11:02 |
|
gioser (Normal User)
Pro
Messaggi: 111
Iscritto: 03/10/2008
|
C'erano un po' di errori...
questo dovrebbe funzionare
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> using namespace std; struct lista { string nome; string cognome; int eta; lista *punt; }; int main() { lista *pl; lista **x; int i,k,y; i=0; y=1; cout << "Inserisci il numero di nodi da creare (min 3) = "; cin >>k; lista p; cout <<y<< ") Inserisci il nome = "; cin >> p.nome; cout <<y<< ") Inserisci il cognome = "; cin >> p.cognome; cout <<y<< ") Inserisci l'eta = "; cin >> p.eta; lista q; p.punt =&q; y++; cout <<y<< ") Inserisci il nome = "; cin >> q.nome; cout <<y<< ") Inserisci il cognome = "; cin >> q.cognome; cout <<y<< ") Inserisci l'eta = "; cin >> q.eta; x=&q.punt; //qui c'è l'errore do { lista *r = new lista; r->punt = NULL; *x=r; x = &r->punt; y++; cout <<y<< ") Inserisci il nome = "; cin >> r->nome; cout <<y<< ") Inserisci il cognome = "; cin >> r->cognome; cout <<y<< ") Inserisci l'eta = "; cin >> r->eta; } while(y+1<k); cout<<"STAMPA:"<<endl; for (pl = &p; pl!=NULL; pl = pl->punt) { cout<<pl->nome<<endl; cout<<pl->cognome<<endl; cout<<pl->eta<<endl; } system("pause"); }
|
Questo è un pò più ordinato
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> using namespace std; struct lista { string nome; string cognome; int eta; lista *next; }; void leggi_nodo(int y, lista *r) { cout <<y<< ") Inserisci il nome = "; cin >> r->nome; cout <<y<< ") Inserisci il cognome = "; cin >> r->cognome; cout <<y<< ") Inserisci l'eta = "; cin >> r->eta; } void stampa_nodo(lista *pl) { cout<<pl->nome<<endl; cout<<pl->cognome<<endl; cout<<pl->eta<<endl; } int main() { lista *pl = NULL; // elemento corrente della lista lista *head = NULL; // primo elemento della lista lista *tail = NULL; // ultimo elemento della lista int i = 0; int k = 0; int y = 0; cout << "Inserisci il numero di nodi da creare (min 1) = "; cin >>k; for (y = 1; y <= k; ++y) { pl = new lista; pl->next = NULL; if (y == 1) head = pl; else tail->next = pl; leggi_nodo(y, pl); tail = pl; } cout<<"STAMPA:"<<endl; for (pl = head; pl != NULL; pl = pl->next) { stampa_nodo(pl); } for (pl = head; pl != NULL;) { lista *r = pl; pl = pl->next; delete r; } system("pause"); }
|
Ultima modifica effettuata da gioser il 25/11/2008 alle 13:47 |
|