Advertisement
L3peha

Untitled

Feb 12th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. class unit
  7. {
  8. public:
  9. unit(int data); //constructor
  10. virtual ~unit(); //destructor
  11. void push(int data);
  12. int getData();
  13. unit* getNext();
  14. unit* findElement(int data);
  15. void addToTheEnd(int data);
  16. void deleteLast();
  17.  
  18. private:
  19. unit* next;
  20. int data;
  21. };
  22.  
  23. unit::unit(int data)
  24. {
  25. this->data = data;
  26. next = NULL;
  27. }
  28.  
  29. unit::~unit()
  30. {
  31. delete next;
  32. }
  33.  
  34. void unit::push(int data)
  35. {
  36. unit* element = new unit(this->data);
  37. element->next = this->next;
  38. this->next = element;
  39. this->data = data;
  40. }
  41.  
  42. int unit::getData()
  43. {
  44. return data;
  45. }
  46.  
  47. unit* unit::getNext()
  48. {
  49. return this->next;
  50. }
  51.  
  52. unit* unit::findElement(int data)
  53. {
  54. unit* selected = this;
  55. while (selected->getData() != data)
  56. {
  57. selected = selected->getNext();
  58. }
  59. return selected;
  60. }
  61.  
  62. void unit::addToTheEnd(int data)
  63. {
  64. unit* newData = new unit(data);
  65. unit* selected = this;
  66. while (selected->next != NULL)
  67. {
  68. selected = selected->next;
  69. }
  70. selected->next = newData;
  71. }
  72.  
  73. void unit::deleteLast()
  74. {
  75. unit* selected = this;
  76. while (selected->next != 0)
  77. {
  78. selected = selected->next;
  79. }
  80. selected = NULL;
  81. }
  82.  
  83. class list
  84. {
  85. public:
  86. list();
  87. ~list();
  88. int getLenght();
  89. void print();
  90. void add(int data);
  91. void addToFront(int data);
  92. void insertIn(int data, int number);
  93. void deleteLast();
  94. unit* findUnit(int data);
  95. unit* getByNumber(int number);
  96. private:
  97. int lenght;
  98. unit* root;
  99. };
  100.  
  101. list::list()
  102. {
  103. lenght = 0;
  104. root = NULL;
  105. }
  106.  
  107. list::~list()
  108. {
  109. delete root;
  110. }
  111.  
  112. int list::getLenght()
  113. {
  114. return lenght;
  115. }
  116.  
  117. void list::print()
  118. {
  119. unit* selected = root;
  120. if (lenght != 0)
  121. {
  122. while (selected->getNext() != NULL)
  123. {
  124. cout << selected->getData() << endl;
  125. selected = selected->getNext();
  126. }
  127. cout << selected->getData() << endl;
  128. }
  129. }
  130.  
  131. void list::add(int data)
  132. {
  133. if (lenght != 0)
  134. {
  135. root->addToTheEnd(data);
  136. }
  137. else
  138. {
  139. root = new unit(data);
  140. }
  141. lenght++;
  142. }
  143.  
  144. void list::addToFront(int data)
  145. {
  146. if (lenght != 0)
  147. {
  148. root->push(data);
  149. }
  150. else
  151. {
  152. root = new unit(data);
  153. }
  154. lenght++;
  155. }
  156.  
  157. void list::insertIn(int data, int number)
  158. {
  159. if (lenght < number || number < 0)
  160. {
  161. cout << "this unit doesn't exist";
  162. }
  163. else
  164. {
  165. unit* selected = root;
  166. int temp = 0;
  167. while (temp < number)
  168. {
  169. selected = selected->getNext();
  170. temp++;
  171. }
  172. selected->push(data);
  173. lenght++;
  174. }
  175. }
  176.  
  177. void list::deleteLast()
  178. {
  179. if (lenght == 0)
  180. {
  181. cout << "list is empty";
  182. }
  183. else
  184. {
  185. root->deleteLast();
  186. lenght--;
  187. }
  188. }
  189.  
  190. unit* list::findUnit(int data)
  191. {
  192. if (lenght != 0)
  193. {
  194. return root->findElement(data);
  195. }
  196. else
  197. {
  198. return NULL;
  199. }
  200. }
  201.  
  202. unit* list::getByNumber(int number)
  203. {
  204. if ((number<0) || (number>=lenght))
  205. {
  206. return NULL;
  207. }
  208. else
  209. {
  210. unit* selected = root;
  211. int temp = 0;
  212. while (temp < number)
  213. {
  214. selected = selected->getNext();
  215. temp++;
  216. }
  217. return selected;
  218. }
  219. }
  220.  
  221. int main()
  222. {
  223. list* mylist = new list();
  224. for (int i = 0; i < 10; i++)
  225. {
  226. mylist->add(i);
  227. }
  228. mylist->addToFront(-1);
  229. mylist->print();
  230. cout << endl;
  231. cout << mylist->getByNumber(4)->getData() << endl << endl;
  232. mylist->insertIn(12, 4);
  233. mylist->print();
  234. cout<< mylist->getLenght()<<endl;
  235. mylist->deleteLast();
  236. cout<< mylist->getLenght()<<endl;
  237. delete mylist;
  238. return 0;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement