luigi90x
07-05-2011, 11:25
Ho fatto questo programmino che dovrebbe (in teoria) inserire e poi stampare gli elementi di uno stack. Il fatto è che mi dice sempre che lo stack è vuoto come se non inserisse niente. Ho notato che non aggiorna la variabile "testa" nella funzione push. Grazie mille.
#include<iostream>
using namespace std;
typedef struct newnode {
int data; //campo info del nodo
struct newnode *next; //puntatore al nuovo nodo di tipo newnode
};
//prototipi delle funzioni
void push(newnode *testa, int info);
void printstack (newnode *curr);
main()
{
newnode *testa;
int info; //i nuovi nodi eventualmente inseriti dall''utente
testa = NULL;
cout<<"quanti elementi inserisci?"<<endl;
int n;
cin>>n;
int i;
for (i=0;i<n;i++)
{
cout<<"inserisci l'elemento"<<i<<":"<<endl;
cin>>info;
push(testa, info);
}
cout<<endl;
newnode *curr = testa;
printstack(curr);
cin>>i;
}
//funzione push
void push(newnode *testa, int info)
{
newnode *newp; //puntatore al nuovo nodo
newp = new newnode; //allocazione memoria del nuovo nodo
//inserisce il nodo in cima alla lista
newp -> data = info;
newp -> next = testa;
testa = newp;
}
//funzione stampa pila
void printstack (newnode *curr)
{
if (curr==NULL)
cout<<"Lo stack è vuoto"<<endl;
else
{
cout<<"lo stack è:"<<endl;
while (curr!=NULL)
{
cout<<curr->data<<endl;
curr = curr->next;
}
}
}
#include<iostream>
using namespace std;
typedef struct newnode {
int data; //campo info del nodo
struct newnode *next; //puntatore al nuovo nodo di tipo newnode
};
//prototipi delle funzioni
void push(newnode *testa, int info);
void printstack (newnode *curr);
main()
{
newnode *testa;
int info; //i nuovi nodi eventualmente inseriti dall''utente
testa = NULL;
cout<<"quanti elementi inserisci?"<<endl;
int n;
cin>>n;
int i;
for (i=0;i<n;i++)
{
cout<<"inserisci l'elemento"<<i<<":"<<endl;
cin>>info;
push(testa, info);
}
cout<<endl;
newnode *curr = testa;
printstack(curr);
cin>>i;
}
//funzione push
void push(newnode *testa, int info)
{
newnode *newp; //puntatore al nuovo nodo
newp = new newnode; //allocazione memoria del nuovo nodo
//inserisce il nodo in cima alla lista
newp -> data = info;
newp -> next = testa;
testa = newp;
}
//funzione stampa pila
void printstack (newnode *curr)
{
if (curr==NULL)
cout<<"Lo stack è vuoto"<<endl;
else
{
cout<<"lo stack è:"<<endl;
while (curr!=NULL)
{
cout<<curr->data<<endl;
curr = curr->next;
}
}
}