Advertisement
Guest User

Untitled

a guest
May 28th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.83 KB | None | 0 0
  1. #include<iostream>
  2. #include<stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. class box
  7. {
  8. private:
  9. int a;//attribbuto degli elementi della classe
  10. box *anotherBox;//putatore di tipo box
  11. public:
  12. box();//costruttore
  13. void pointAtNext(box *whereToPoint);//funzione che indica dove puntare
  14. void set(int nuovoValore);//funzione che setta il valore dell'attribbuto
  15. box *getNext();//funzione che scorre gli elementi
  16. int getA();//funzione che restituisce il valore dell'attributo
  17. void stampa();//funzione che stampa gli elementi
  18. };
  19.  
  20. box::box()
  21. {
  22. a = 5;
  23. anotherBox = NULL;
  24. }
  25.  
  26. void box::pointAtNext(box *whereToPoint)
  27. {
  28. anotherBox = whereToPoint;
  29. }
  30.  
  31. void box::set(int valore)
  32. {
  33. a = valore;
  34. }
  35.  
  36. box *box::getNext()
  37. {
  38. return anotherBox;
  39. }
  40.  
  41. int box::getA()
  42. {
  43. return a;
  44. }
  45.  
  46. void box::stampa()
  47. {
  48. cout<<a<<" ";
  49. }
  50.  
  51. int
  52. main()
  53. {
  54. box *boxPointer;//puntatore usato per la creazione delle scatole o per la stampa
  55. box *start = NULL;//puntatore di inizio lista
  56. box *temp, *temp2;//puntatori temporanei
  57. int scelta, valore;
  58.  
  59. do
  60. {
  61. cout<<"\n\n LISTA LINKATA ORDINATA ";
  62. cout<<"\n\n- Per inserire un elemento nella lista e ordinarla digita 1.";
  63. cout<<"\n- Per visualizzare la lista digita 2.";
  64. cout<<"\n- Per visualizzare le posizioni pari della lista digita 3.";
  65. cout<<"\n- Per uscire dal programma digita 4.";
  66. cout<<"\nDigita ora la tua scelta:";
  67. cin>>scelta;
  68.  
  69. switch(scelta)
  70. {
  71. case 1:
  72. boxPointer = new box; // alloca nuova scatola
  73. cout<<"\n\nCreazione della nuova scatola.";
  74. cout<<"\nInserire il valore della scatola:";
  75. cin>>valore;//lettura del valore da attribuire all'attribbuto
  76. boxPointer->set(valore);//settaggio valore
  77. if(start == NULL)
  78. {
  79. start = boxPointer; //se start=NULL, la scatola creata è la prima
  80. }//primo if
  81. else
  82. {
  83. temp=start;//
  84. temp2=temp;
  85. while((temp->getNext()!=NULL) && (temp->getA() < valore))//fino a quando temp non punta null e il suo valore è < di val
  86. {
  87. temp2=temp;
  88. temp=temp->getNext();
  89. }//fine while
  90. if(valore<start->getA()) //se valore inserito < valore contenuto in start
  91. {
  92. boxPointer->pointAtNext(start); //la nuova scatola punta start
  93. start=boxPointer;
  94. }//fine if 2
  95. else if(start->getNext()!=NULL) //se start non punta null
  96. {
  97. if(temp->getA()>= valore)//se il valore contenuto in temp è >= a quello inserito
  98. {
  99. boxPointer->pointAtNext(temp);//la nuova scatola punta a temp
  100. temp2->pointAtNext(boxPointer);//temp2 punta alla nuova scatola
  101. }//fine if4
  102. else
  103. {
  104. temp->pointAtNext(boxPointer);//temp punta alla nuova scatola
  105. }//else4
  106. }//fine if 3
  107. else
  108. {
  109. start->pointAtNext(boxPointer);//start punta alla nuova scatola
  110. }//else2
  111. }//fine else 3
  112. break;
  113.  
  114. case 2:
  115. if(start==NULL)//se start==null non ci sono scatole
  116. {
  117. cout<<"\n\nLa lista e' vuota.\n";
  118. }
  119. else
  120. {
  121. boxPointer=start;//la stampa parte da start
  122. cout<<"\n\n La lista contiene i seguenti valori:";
  123. do
  124. {
  125. boxPointer->stampa();//stampa boxPointer
  126. boxPointer=boxPointer->getNext();//boxPointer scala nella lista
  127. }
  128. while(boxPointer!=NULL);//il ciclo si ripete fino a quando boxPointer punta a null
  129. }
  130. break;
  131. case 3:
  132. if(start==NULL)//se start==null non ci sono scatole
  133. {
  134. cout<<"\n\nLa lista e' vuota.\n";
  135. }
  136. else
  137. {
  138. boxPointer=start->getNext();//la stampa parte dalla scatola successiva a start(scatola 2)
  139. cout<<"\n\n Le posizioni pari della lista contengono i seguenti valori:";
  140. while(boxPointer!=NULL)//il ciclo prosegue fino a quando boxPointer punta a null
  141. {
  142. boxPointer->stampa();//stampa boxPointer
  143. boxPointer=boxPointer->getNext();//boxPointer scala nella lista
  144. if(boxPointer!=NULL)//se boxPointer non punta a null
  145. {
  146. boxPointer=boxPointer->getNext();//boxPointer scala ancora nella lista
  147. }
  148. }
  149. }
  150. break;
  151.  
  152.  
  153. case 4:
  154. break;
  155. }
  156.  
  157. } while(scelta!=4);
  158.  
  159. system("pause");
  160. return(0);
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement