Credo che ci sia un problema con il collegamento che collega al primo.
Vi posto il mio codice:
codice:
#include <iostream>
using namespace std;
struct nodo{
int key;
nodo* next;};
typedef nodo* pnodo;
pnodo cons(int x, pnodo testa); //per creare un elemento
void stampa(pnodo testa); //stampa la lista
pnodo leggi(); // legge da tastiera
bool cambia(nodo *n1, nodo*n2);
pnodo cons(int x, pnodo testa){
pnodo nuovo=new nodo;
nuovo->key=x;
nuovo->next=testa;
return nuovo;
}
void stampa(pnodo testa){
pnodo p;
for(p=testa;p!=0;p=p->next)
cout << p->key << " ";
}
pnodo leggi(){
int x;
pnodo testa,ultimo;
int n,i;
cout << "Inserire il numero di elementi: ";
cin >> n;
if(n==0) return 0;
for(i=0;i<n;i++){
cout << "Inserire il "<< i+1 <<" elemento: ";
cin >> x;
if(i==0){
testa=cons(x,0);
ultimo=testa;
}else{
pnodo nuovo=cons(x,0);
ultimo->next=nuovo;
ultimo=nuovo;
}
}
return testa;
}
bool cambia(nodo *n1, nodo*n2) {
if ( n1 && n2 ) {
nodo * t = n1->next;
n1->next = n2->next;
n2->next = t;
return true;
}
else
return false;
}
int main(){
pnodo a=leggi();
cambia(a,a->next);
stampa(a);
return 0;
}
Vi posto l'output:
codice:
Inserire il numero di elementi: 4
Inserire il 1 elemento: 2
Inserire il 2 elemento: 3
Inserire il 3 elemento: 4
Inserire il 4 elemento: 5
2 4 5
Non capisco perchè!