Ecco qui tutto il codice
Codice: Seleziona tutto
#include<iostream>
using namespace std;
class Info{
private:
int valore;
public:
Info();
Info(int);
int getValore();
void setValore(int);
void Stampa();
};
Info::Info(int val){
this->valore=val;
}
void Info::setValore(int val){
this->valore=val;
}
int Info::getValore(){
return this->valore;
}
void Info::Stampa(){
cout<<" Valore: "<<this->getValore()<<endl;
}
class Nodo{
public:
Info *info;
Nodo *next;
Nodo(Info*);
void Stampa();
};
Nodo::Nodo(Info *info){
this->info=info;
this->next=NULL;
}
void Nodo::Stampa(){
this->info->Stampa();
}
class Lista{
public:
Nodo *start;
Lista();
void Add(int);
void InserisciInCoda(int);
void Stampa();
Nodo* Ricerca(int);
};
Nodo* Lista::Ricerca(int valore_cercato){
Nodo *walker= this-> start;
while(walker != NULL)
{
if(walker->info->getValore()==valore_cercato)
{
return walker;
}
walker=walker->next;
}
return NULL;
}
void Lista::Add(int val){
Info *info= new Info(val);
if(this->start == NULL)
{
start= new Nodo(info);
}
else
{
Nodo *walker= this->start;
while(walker->next != NULL)
{
walker=walker->next;
}
walker->next=new Nodo(info);
}
}
void Lista::InserisciInCoda(int val){
Info *info=new Info(val);
Nodo *walker=this->start;
if(this->start == NULL)
{
info-=val;
walker->next=NULL;
this->start=walker;
}
else
{
while(walker->next != NULL)
{
walker=walker->next;
}
info-=val;
walker->next=NULL;
this->start=walker;
}
}
void Lista::Stampa(){
Nodo *walker=this->start;
while(walker != NULL)
{
walker->Stampa();
walker=walker->next;
}
}
Lista::Lista(){
this->start=NULL;
}
int main(){
Lista *lista=new Lista();
Nodo *nodo=NULL;
int x, input, n, valore_cercato;
bool esci= false;
bool indietro=false;
do{
cout<<"***MENU'**"<<endl;
cout<<"1-Scegli inserimento"<<endl;
cout<<"2-Ricerca valore"<<endl;
cout<<"3-Stampa"<<endl;
cout<<"4-Esci"<<endl;
cin>>input;
cout<<endl;
switch(input){
case 1:
do{
cout<<"Scegli inserimento:"<<endl;
cout<<"\t1-Inserimento normale"<<endl;
cout<<"\t2-Inserisci in coda"<<endl;
cout<<"\t3-Inserisci in testa"<<endl;
cout<<"\t4-Torna indietro"<<endl;
cin>>input;
cout<<endl;
switch(input){
case 1:
cout<<"Quanti valori vuoi inserire nella lista ?"<<endl;
cin>>n;
cout<<endl;
for(int i=0; i<n; i++)
{
cout<<"Inserisci il "<<i+1<<" valore: ";
cin>>x;
cout<<endl;
nodo= lista->Ricerca(x);
if(nodo != NULL)
{
cout<<nodo->info->getValore()<<" "<<" gia' presente nella lista"<<endl;
}
else
{
lista->Add(x);
}
}
break;
case 2:
cout<<"Quanti valori vuoi inserire in testa ?"<<endl;
cin>>n;
cout<<endl;
for(int i=0; i<n; i++)
{
cout<<"Inserisci il "<<i+1<<" valore: ";
cin>>x;
cout<<endl;
nodo=lista->Ricerca(x);
if(nodo != NULL)
{
cout<<nodo->info->getValore()<<" "<<" già presente nella lista"<<endl;
}
else
{
lista->InserisciInCoda(x);
}
}
break;
case 3:
break;
case 4:
indietro=true;
break;
default:
cout<<"Selezione errata"<<endl;
}
}while(!indietro);
break;
case 2:
cout<<"Inserire valore da cercare: ";
cin>>valore_cercato;
cout<<endl;
nodo= lista->Ricerca(valore_cercato);
if(nodo != NULL)
{
cout<<"Il valore "<<nodo->info->getValore()<<" è stato trovato !"<<endl;
}
else
{
cout<<"Il valore non è presente nella lista !\n"<<endl;
}
break;
case 3:
lista->Stampa();
cout<<endl;
break;
case 4:
esci=true;
break;
default:
cout<<"Selezione non valida"<<endl<<endl;
break;
}
}while(!esci);
}