View Full Version : [C++] Problema con lista
jonnykaraoke
23-08-2011, 16:15
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...
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;
}
adgatinni
23-08-2011, 16:50
Devi sempre inizializzare le tue variabili !!
testa=aux;
ptr=testa;
aux e testa non sono inizializzate, non puoi fare questo!
poi:
do
{
aux=new nodo;
ptr->next=aux;
c'è un problema, non puoi utilizzare ptr perché non è stato assegnato in memoria.
ho corretto il tuo 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;
}
jonnykaraoke
23-08-2011, 19:02
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?
Io sto un pò a digiuno di puntatori, ma siamo sicuri di sto passaggio?
do
{
ptr->next = aux;
cin >> ptr->next->ciao;
} while (ptr->next->ciao != 0);
non si rimane sempre nello stesso posto?
adgatinni
23-08-2011, 20:19
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 :
#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;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.