Ultima modifica da un moderatore:
Salve a tutti, sto cercando di sviluppare una lista ordinata.
Errori sintattici non ce ne sono, tuttavia, una volta inseriti gli elementi, non vengono stampati tutti gli elementi inseriti.
Ho sviluppato la lista tamite funzioni ricorsive, perchè richiesto dal mio professore.
Con il main che ho scritto, i valori stampati sono 5,2,1 in questo ordine(la lista effettivamente è ordinata, ma mancano due valori )
Qui riporto il codice e grazie a tutti in anticipo
lista.h
lista.cpp
main
Errori sintattici non ce ne sono, tuttavia, una volta inseriti gli elementi, non vengono stampati tutti gli elementi inseriti.
Ho sviluppato la lista tamite funzioni ricorsive, perchè richiesto dal mio professore.
Con il main che ho scritto, i valori stampati sono 5,2,1 in questo ordine(la lista effettivamente è ordinata, ma mancano due valori )
Qui riporto il codice e grazie a tutti in anticipo
lista.h
C++:
class lista{
public:
lista(){testa=0;}
~lista(){clear();}
bool inserisci_testa(const value_type& );
bool rimuovi_testa(value_type&);
bool empty()const{return testa==0;}
bool full()const{return false;}
bool insert(const value_type &);
bool erase(const value_type&);
bool inList(const value_type&);
void print();
void clear();
private:
struct Nodo{
Nodo* next;
value_type valore;
};
Nodo* testa;
};
lista.cpp
C++:
bool lista::inserisci_testa(const value_type& elemento){
if(full()) return false;
Nodo* nodo=new Nodo;
nodo->valore=elemento;
nodo->next=testa;
testa=nodo;
return true;
}
bool lista::insert(const value_type& elemento){
if(full()) return false;
if(testa==0 || testa->valore<elemento) inserisci_testa(elemento);
else {
testa=testa->next;
return insert(elemento);
}
}
void lista::print(){
if(testa!=0) {
cout << testa->valore << "\t";
testa=testa->next;
print();
}
}
main
C++:
int main(){
lista l;
if(l.insert(1)) cout<<"\n inserimento riuscito!";
else cout<<"\n lista piena!";
if(l.insert(3)) cout<<"\n inserimento riuscito!";
else cout<<"\n lista piena!";
if(l.insert(4)) cout<<"\n inserimento riuscito!";
else cout<<"\n lista piena!";
if(l.insert(2)) cout<<"\n inserimento riuscito!";
else cout<<"\n lista piena!";
if(l.insert(5)) cout<<"\n inserimento riuscito!";
else cout<<"\n lista piena!";
cout<<endl;
l.print();
}