Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdlib.h>
- using namespace std;
- class box
- {
- private:
- int a;//attribbuto degli elementi della classe
- box *anotherBox;//putatore di tipo box
- public:
- box();//costruttore
- void pointAtNext(box *whereToPoint);//funzione che indica dove puntare
- void set(int nuovoValore);//funzione che setta il valore dell'attribbuto
- box *getNext();//funzione che scorre gli elementi
- int getA();//funzione che restituisce il valore dell'attributo
- void stampa();//funzione che stampa gli elementi
- };
- box::box()
- {
- a = 5;
- anotherBox = NULL;
- }
- void box::pointAtNext(box *whereToPoint)
- {
- anotherBox = whereToPoint;
- }
- void box::set(int valore)
- {
- a = valore;
- }
- box *box::getNext()
- {
- return anotherBox;
- }
- int box::getA()
- {
- return a;
- }
- void box::stampa()
- {
- cout<<a<<" ";
- }
- int
- main()
- {
- box *boxPointer;//puntatore usato per la creazione delle scatole o per la stampa
- box *start = NULL;//puntatore di inizio lista
- box *temp, *temp2;//puntatori temporanei
- int scelta, valore;
- do
- {
- cout<<"\n\n LISTA LINKATA ORDINATA ";
- 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 uscire dal programma digita 4.";
- cout<<"\nDigita ora la tua scelta:";
- cin>>scelta;
- switch(scelta)
- {
- case 1:
- boxPointer = new box; // alloca nuova scatola
- cout<<"\n\nCreazione della nuova scatola.";
- cout<<"\nInserire il valore della scatola:";
- cin>>valore;//lettura del valore da attribuire all'attribbuto
- boxPointer->set(valore);//settaggio valore
- if(start == NULL)
- {
- start = boxPointer; //se start=NULL, la scatola creata è la prima
- }//primo if
- else
- {
- temp=start;//
- temp2=temp;
- while((temp->getNext()!=NULL) && (temp->getA() < valore))//fino a quando temp non punta null e il suo valore è < di val
- {
- temp2=temp;
- temp=temp->getNext();
- }//fine while
- if(valore<start->getA()) //se valore inserito < valore contenuto in start
- {
- boxPointer->pointAtNext(start); //la nuova scatola punta start
- start=boxPointer;
- }//fine if 2
- else if(start->getNext()!=NULL) //se start non punta null
- {
- if(temp->getA()>= valore)//se il valore contenuto in temp è >= a quello inserito
- {
- boxPointer->pointAtNext(temp);//la nuova scatola punta a temp
- temp2->pointAtNext(boxPointer);//temp2 punta alla nuova scatola
- }//fine if4
- else
- {
- temp->pointAtNext(boxPointer);//temp punta alla nuova scatola
- }//else4
- }//fine if 3
- else
- {
- start->pointAtNext(boxPointer);//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
- {
- boxPointer=start;//la stampa parte da start
- cout<<"\n\n La lista contiene i seguenti valori:";
- do
- {
- boxPointer->stampa();//stampa boxPointer
- boxPointer=boxPointer->getNext();//boxPointer scala nella lista
- }
- while(boxPointer!=NULL);//il ciclo si ripete fino a quando boxPointer punta a null
- }
- break;
- case 3:
- if(start==NULL)//se start==null non ci sono scatole
- {
- cout<<"\n\nLa lista e' vuota.\n";
- }
- else
- {
- boxPointer=start->getNext();//la stampa parte dalla scatola successiva a start(scatola 2)
- cout<<"\n\n Le posizioni pari della lista contengono i seguenti valori:";
- while(boxPointer!=NULL)//il ciclo prosegue fino a quando boxPointer punta a null
- {
- boxPointer->stampa();//stampa boxPointer
- boxPointer=boxPointer->getNext();//boxPointer scala nella lista
- if(boxPointer!=NULL)//se boxPointer non punta a null
- {
- boxPointer=boxPointer->getNext();//boxPointer scala ancora nella lista
- }
- }
- }
- break;
- case 4:
- break;
- }
- } while(scelta!=4);
- system("pause");
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement