Questo sito ha bisogno della pubblicità per poter essere mantenuto. Gentilmente disabilita il blocco della pubblicità nel tuo browser per questo sito web.
Caricamento in corso...Caricamento in corso...
Caricamento in corso...

Lista Linkata ordinata e ricerca

Definire la classe lista linkata.
Memorizzare i dati in modo ordinato  usando la lista. 
Stampare  la lista.
Verificare se un elemento è stato memorizzato.

 

#include<iostream>
#include<stdlib.h>
using namespace std;
/*
Definire la classe lista linkata e la classe lista doppiamente linkata.
Memorizzare i dati in modo ordinato  usando le due liste. 
Stampare  le liste.
Verificare se un elemento è stato memorizzato.
Eliminare un elemento.*/


class ListaLink{
      
              int u;
              ListaLink *next;
              
      public:
             ListaLink(void);
             ListaLink *getNext(void);
             int getU(void);
             void setNext(ListaLink *p);
             void setU(int v);   
             void stampa();
};

ListaLink::ListaLink(void)
{
    next = NULL;
    u = 0;                                               
}

ListaLink *ListaLink::getNext(void)
{
   return next;
}

int ListaLink::getU(void)
{
    return u;
}

void ListaLink::setNext(ListaLink *p)
{
     next = p;     
}

void ListaLink::setU (int v)
{
     u = v;     
}

void ListaLink::stampa()
{
     cout<<u<<" ";     
}


class ListaDoppia{
      
};      
      


int main()
{
    int valore, i, n, scelta;
    ListaLink *Pointer;//puntatore usato per la creazione delle scatole o per la stampa
    ListaLink *start = NULL;//puntatore di inizio lista
    ListaLink *temp, *temp2;//puntatori temporanei
    bool flag;
    
    do
      {
          cout<<"\n\n- Per inserire un elemento nella lista e ordinarla digita 1.";
          cout<<"\n- Per visualizzare la lista digita 2.";
          cout<<"\n- Per visualizzare le posizioni pari della lista digita 3.";
          cout<<"\n- Per ricercare un numero digita 4.";
          cout<<"\n- Per uscire dal programma digita 5.";
          cout<<"\nDigita ora la tua scelta:";
          cin>>scelta;
          
          switch(scelta)
          {
                        case 1:
                               Pointer = new ListaLink; // alloca nuova scatola
                               cout<<"\nInserire il valore della scatola:";
                               cin>>valore;//lettura del valore da attribuire all'attribbuto
                               Pointer->setU(valore);//settaggio valore
                               if(start == NULL)                
                               {
                                        start = Pointer; //se start=NULL, la scatola creata è la prima
                                        }//primo if
                                else
                                {
                                    temp=start;//
                                    temp2=temp;
                                    while((temp->getNext()!=NULL) && (temp->getU() < valore))//fino a quando temp non punta null e il suo valore è < di val
                                    {
                                                                  temp2=temp; 
                                                                  temp=temp->getNext();
                                                                  }//fine while
                                      if(valore<start->getU()) //se valore inserito < valore contenuto in start
                                       {
                                                            Pointer->setNext(start); //la nuova scatola punta start
                                                            start=Pointer;
                                                            }//fine if 2
                                        else if(start->getNext()!=NULL) //se start non punta null
                                             {
                                                               if(temp->getU()>= valore)//se il valore contenuto in temp è >= a quello inserito
                                                               {
                                                                                 Pointer->setNext(temp);//la nuova scatola punta a temp
                                                                                 temp2->setNext(Pointer);//temp2 punta alla nuova scatola
                                                                                 }//fine if4
                                                                else
                                                                {
                                                                    temp->setNext(Pointer);//temp punta alla nuova scatola
                                                                    }//else4
                                                                }//fine if 3
                                       else
                                         {
                                              start->setNext(Pointer);//start punta alla nuova scatola
                                                 }//else2
                                    }//fine else 3
                                   break;
                         
                       case 2:    
                               if(start==NULL)//se start==null non ci sono scatole
                                 {
                                               cout<<"\n\nLa lista e' vuota.\n";
                                               }
                                 else
                                 {
                                     Pointer=start;//la stampa parte da start
                                      cout<<"\n\n La lista contiene i seguenti valori:";
                                      do
                                      {
                                               Pointer->stampa();//stampa boxPointer
                                               Pointer=Pointer->getNext();//boxPointer scala nella lista
                                               }
                                               while(Pointer!=NULL);//il ciclo si ripete fino a quando boxPointer punta a null
                                               }
                                      break;
                       
                             
                              case 4:
                             
                             cout<<"Inserisci l'elemento da ricercare: ";
                             cin>>n;
                             flag = false;
                             if(start==NULL)//se start==null non ci sono scatole
                                 {
                                               cout<<"\n\nLa lista e' vuota.\n";
                                               }
                                 else
                                 {
                                       Pointer=start;//la stampa parte da start
                                     
                                      
                                      do
                                      {
                                               if(Pointer->getU() == n)
                                                  flag = true;
                                             else
                                             flag = false;
                                               Pointer=Pointer->getNext();//boxPointer scala nella lista
                                               }
                                               while(Pointer!=NULL && !flag);//il ciclo si ripete fino a quando boxPointer punta a null
                                               }
                                      if(flag)
                                          cout<<"Valore trovato";
                                      else
                                      cout<<"Valore non trovato";
                                      break;

                                               
                                      
                             
                             break;


                                               
                           


                        case 5:
                               break;
                               }
                      
                      }   while(scelta!=5);
    
    system("PAUSE");
}