SHARE
TWEET

Untitled

L3peha Feb 18th, 2020 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top