Advertisement
L3peha

Untitled

Feb 18th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 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. ~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. int temp = 0;
  77. while (selected->next != 0)
  78. {
  79. selected = selected->next;
  80. temp++;
  81. }
  82. unit* preLast = this;
  83. for (int i = 0; i < temp-1; i++)
  84. {
  85. preLast = preLast->next;
  86. }
  87. preLast->next = NULL;
  88. }
  89.  
  90. class list
  91. {
  92. public:
  93. list();
  94. ~list();
  95. int getLenght();
  96. void print();
  97. void add(int data);
  98. void addToFront(int data);
  99. void insertIn(int data, int number);
  100. void deleteLast();
  101. unit* findUnit(int data);
  102. unit* getByNumber(int number);
  103. private:
  104. int lenght;
  105. unit* root;
  106. };
  107.  
  108. list::list()
  109. {
  110. lenght = 0;
  111. root = NULL;
  112. }
  113.  
  114. list::~list()
  115. {
  116. delete root;
  117. }
  118.  
  119. int list::getLenght()
  120. {
  121. return lenght;
  122. }
  123.  
  124. void list::print()
  125. {
  126. unit* selected = root;
  127. if (lenght != 0)
  128. {
  129. while (selected->getNext() != NULL)
  130. {
  131. cout << selected->getData() << endl;
  132. selected = selected->getNext();
  133. }
  134. cout << selected->getData() << endl;
  135. }
  136. }
  137.  
  138. void list::add(int data)
  139. {
  140. if (lenght != 0)
  141. {
  142. root->addToTheEnd(data);
  143. }
  144. else
  145. {
  146. root = new unit(data);
  147. }
  148. lenght++;
  149. }
  150.  
  151. void list::addToFront(int data)
  152. {
  153. if (lenght != 0)
  154. {
  155. root->push(data);
  156. }
  157. else
  158. {
  159. root = new unit(data);
  160. }
  161. lenght++;
  162. }
  163.  
  164. void list::insertIn(int data, int number)
  165. {
  166. if (lenght < number || number < 0)
  167. {
  168. cout << "this unit doesn't exist";
  169. }
  170. else
  171. {
  172. unit* selected = root;
  173. int temp = 0;
  174. while (temp < number)
  175. {
  176. selected = selected->getNext();
  177. temp++;
  178. }
  179. selected->push(data);
  180. lenght++;
  181. }
  182. }
  183.  
  184. void list::deleteLast()
  185. {
  186. if (lenght == 0)
  187. {
  188. cout << "list is empty";
  189. }
  190. else
  191. {
  192. root->deleteLast();
  193. lenght--;
  194. }
  195. }
  196.  
  197. unit* list::findUnit(int data)
  198. {
  199. if (lenght != 0)
  200. {
  201. return root->findElement(data);
  202. }
  203. else
  204. {
  205. return NULL;
  206. }
  207. }
  208.  
  209. unit* list::getByNumber(int number)
  210. {
  211. if ((number<0) || (number>=lenght))
  212. {
  213. return NULL;
  214. }
  215. else
  216. {
  217. unit* selected = root;
  218. int temp = 1;
  219. while (temp < number)
  220. {
  221. selected = selected->getNext();
  222. temp++;
  223. }
  224. return selected;
  225. }
  226. }
  227.  
  228. int main()
  229. {
  230. list* test = new list();
  231. for (int i = 0; i < 15; i++)
  232. {
  233. test->add(i+1);
  234. }
  235. test->addToFront(-1);
  236. test->print();
  237. cout << "-------------------" << endl;
  238. cout << test->getByNumber(6)->getData() << endl;
  239. cout << "-------------------"<<endl;
  240. test->insertIn(-5, 6);
  241. test->print();
  242. cout << "-------------------"<<endl;
  243. cout << test->getLenght() << endl;
  244. cout << "-------------------"<<endl;
  245. test->deleteLast();
  246. cout << test->getLenght() << endl;
  247. cout << "-------------------"<<endl;
  248. test->print();
  249. cout << "-------------------"<<endl;
  250. cout << test->getByNumber(10)->getData() << endl;
  251. delete test;
  252. return 0;
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement