Quando cerco di stampare a video gli elementi della mia testa, mi accorgo che esce sempre 0 e non riesco a capire il motivo.
main.cpp
codice:
#include <cstdlib>
#include <iostream>
#include "prova.h"
using namespace std;
int main(int argc, char *argv[])
{
//VARIABILI
Pnodo testa;//creo la testa (puntatore record)
testa=0;//inizializzi la testa a 0
int n;//numero massimo di valore da inserire nella lista
int x;//valore che si inserirà nel for
cout<<"Quanti valori vuoi inserire nella lista? Inserisci: ";
cin>>n;
for (int i=0; i<n; i++)
{
cout<<"Inserisci il " <<i <<"^ valore: ";
cin>>x;
push(testa,x);//inserimento in testa alla lista;
}
cout<<"La lista inserita e':\n";
for (int i=0; i<n; i++)
{
cout<<"Il " <<i <<"^ valore e': " <<endl;
stampa(testa,x);//stampa dalla testa
}
system("PAUSE");
return EXIT_SUCCESS;
}
prova.h
codice:
#ifndef prova_h
#define prova_h
typedef struct nodo *Pnodo;
typedef struct nodo{
int elemento;
Pnodo successivo;
};
void push(Pnodo &,int &);//inserimento in testa alla lista;
void stampa(Pnodo &,int &);//stampa dalla testa
#endif
prova.cpp
codice:
#include <cstdlib>
#include <iostream>
#include "prova.h"
using namespace std;
void push(Pnodo &nuovaTesta,int &x)//inserimento in testa alla lista;
{
Pnodo nuovo = new nodo; //alloco spazio in memorie heap
nuovo->elemento = x; //associo il valore x;
nuovo->successivo = nuovaTesta; //lo lego alla lista
nuovo = nuovaTesta; //diventa la nuova testa
cout<<nuovaTesta;
}
void stampa(Pnodo &nuovaTesta,int &x)//stampa dalla testa
{
Pnodo temp;
temp = nuovaTesta;
while(temp!=0)
{
cout << temp->elemento;
temp = temp->successivo;
}
}