|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2009
Messaggi: 18
|
[C++] Problema con lista
salve, sono alle prime armi e mi sto imbattendo nelle liste....ho fatto questo ma non funziona....dovrebbe prima prendere i valori e poi stamparli...
Codice:
int main() { struct nodo { int ciao; nodo*next; }; nodo*testa; nodo*aux; nodo*ptr; nodo*stampa; testa=aux; ptr=testa; do { aux=new nodo; ptr->next=aux; cin>>ptr->next->ciao; }while(ptr->next->ciao!=0); stampa=testa->next; do { cout<<stampa->ciao; stampa=stampa->next; }while(stampa->next->ciao==0); return 0; } |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
|
Devi sempre inizializzare le tue variabili !!
Codice:
testa=aux; ptr=testa; poi: Codice:
do { aux=new nodo; ptr->next=aux; ho corretto il tuo codice: Codice:
#include <iostream> using namespace std; int main(void) { struct nodo { int ciao; nodo*next; }; nodo* testa = new nodo; nodo* aux = new nodo; nodo* ptr = new nodo; nodo* stampa; do { ptr->next = aux; cin >> ptr->next->ciao; } while (ptr->next->ciao != 0); testa->next = new nodo; stampa = testa->next; /* do { cout << stampa->ciao; // ciao può valere qualsiasi valore qua stampa = stampa->next; // errore perché stampa->next non è stato assegnato } while(stampa->next->ciao == 0); // errore perché stampa->next non è stato assegnato in memoria */ delete aux; delete ptr; delete testa; delete stampa; return 0; } |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Sep 2009
Messaggi: 18
|
ti ringrazio! ma col codice che hai scritto tu non ho ben capito come fare la stampa dei valori che riceve in intput...non ci deve essere un puntatore iniziale che mi porti al primo valore della lista? in questo modo come faccio?
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
Io sto un pò a digiuno di puntatori, ma siamo sicuri di sto passaggio?
Codice:
do { ptr->next = aux; cin >> ptr->next->ciao; } while (ptr->next->ciao != 0);
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
|
il mio codice non utilizza le linked list. è solo un codice compilabile e senza seg fault.
jonnykaraoke, tu hai bisogno di una lezione sulle linked list. Ti ho scritto la tua voglia, non è difficile a capire : Codice:
#include <iostream> struct linkedList_s { int m_value; linkedList_s* next; }; linkedList_s* push_front(linkedList_s* mylist, int n) { linkedList_s* newList = new linkedList_s; newList->m_value = n; newList->next = mylist; return newList; } void showList(linkedList_s* mylist) { linkedList_s* tmp = mylist; while (tmp != 0) { std::cout << tmp->m_value << std::endl; tmp = tmp->next; } } void releaseMemory(linkedList_s* mylist) { linkedList_s* tmp = mylist; while (tmp != 0) { linkedList_s* tmp_next = tmp->next; delete tmp; tmp = tmp_next; } } int main(void) { linkedList_s* mylist = 0; int answer = 0; do { std::cin >> answer; mylist = push_front(mylist, answer); } while (answer != 0); showList(mylist); releaseMemory(mylist); return 0; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:06.