|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 2
|
[C++] Programma stack
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.
Codice:
#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;
}
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
la stampa come fosse vuota perché lo è
Codice:
//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;
}
per farlo in modo corretto puoi o ritornare un puntatore a newnode (ritorni la nuova testa, e chiami scrivendo testa = push(testa, info)) oppure usare passare il puntatore alla testa per riferimento |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 2
|
grazie mille ora provo e vedo se va.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:49.


















