Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.21 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Element
  6. {
  7.     int key;
  8.     Element* next;
  9.     friend class List;
  10. public:
  11.  
  12.     int getKey();
  13.     int ListElement(int key);
  14. };
  15. class List
  16. {
  17.     Element* head;
  18.     int size;
  19.  
  20. public:
  21.     void addToBeginning(int key);
  22.     void addToEnd(int key);
  23.     bool contains(int key);
  24.     Element*getElement(int key);
  25.     Element*getByIndex(int idx);
  26.     void removeKey(int key);
  27.     void clearAll();
  28.     void printList();
  29.     List();
  30. };
  31.  
  32. void List::addToBeginning(int key)
  33. {
  34.     Element* newElem = new Element();
  35.     newElem->key = key;
  36.     newElem->next = head;
  37.     head = newElem;
  38.     size++;
  39. }
  40.  
  41. void List::addToEnd(int key)
  42. {
  43.     Element* newElem = new Element();
  44.     newElem->key = key;
  45.  
  46.     if (head != NULL)
  47.     {
  48.         Element* helper = head;
  49.        
  50.         while (helper->next != NULL)
  51.         {
  52.             helper = helper->next;
  53.         }
  54.        
  55.         helper->next = newElem;
  56.     }
  57.     else
  58.     {
  59.         head = newElem;
  60.     }
  61. }
  62.  
  63. Element* List::getElement(int key)
  64. {
  65.     if (head == NULL)
  66.     {
  67.         return NULL;
  68.     }
  69.    
  70.     Element* helper = head;
  71.     while (helper->key != key)
  72.     {
  73.         if (helper->next == NULL) //key is not present
  74.         {
  75.             return NULL;
  76.         }
  77.        
  78.         helper = helper->next;
  79.     }
  80.    
  81.     return helper; //moze wskaznik?
  82. }
  83.  
  84. bool List::contains(int key)
  85. {
  86.     if(List::getElement(key)==NULL){
  87.         return false;
  88.     }
  89.     else
  90.     {
  91.         return true;
  92.     }
  93.        
  94.     // if (head == NULL)
  95.     // {
  96.         // return false;
  97.     // }
  98.    
  99.     // Element* helper = head;
  100.     // while (helper->key != key)
  101.     // {
  102.         // if (helper->next == NULL) //key is not present
  103.         // {
  104.             // return false;
  105.         // }
  106.        
  107.         // helper = helper->next;
  108.     // }
  109.    
  110.     // return true; //moze wskaznik?
  111. }
  112.  
  113. Element* List::getByIndex(int idx)
  114. {
  115.     if (head == NULL)
  116.     {
  117.         return NULL;
  118.     }
  119.    
  120.     Element* helper = head;
  121.    
  122.     for(int i=0; i<idx; i++)
  123.     {
  124.         if (helper->next!= NULL)
  125.         {
  126.             helper = helper->next;
  127.         }
  128.         else
  129.         {
  130.             return NULL;
  131.         }
  132.     }
  133.    
  134.     return helper;
  135. }
  136.  
  137. void List::remove(int key)
  138. {
  139.     if (head==NULL)
  140.     {
  141.         cout << "Element o podanym kluczu nieznaleziony." << endl;
  142.         return;
  143.     }
  144.    
  145.     Element* helper = head;
  146.     Element* previous = NULL;
  147.    
  148.     while (helper->key != key){
  149.         if (helper->next != NULL)
  150.         {
  151.             cout << "Element o podanym kluczu nieznaleziony." << endl;
  152.             return;
  153.         }
  154.        
  155.         previous = helper;
  156.         helper = helper->next;
  157.     }
  158.    
  159.     prevous->next = helper->next;
  160.     delete helper;
  161. }
  162.  
  163. void List::clearAll()
  164. {
  165.     Element *helper = head;
  166.     Element *next = helper->next;
  167.     head = NULL;
  168.  
  169.     while (next != NULL)
  170.     {
  171.         helper = next;
  172.         next = helper->next;
  173.         delete helper;
  174.     }  
  175.     size = 0;
  176. }
  177.  
  178. void List :: printList()
  179. {
  180.     if (head == NULL)
  181.     {
  182.         cout << "lista jest pusta";
  183.     }
  184.    
  185.     cout << "List=[";
  186.    
  187.     Element *helper = head;
  188.     while (helper != NULL)
  189.     {
  190.         cout << helper;
  191.         cout << ", ";
  192.        
  193.         helper = helper->next;
  194.     }
  195.    
  196.     cout << "] size=" << size;
  197. }
  198.  
  199. int Element::getKey()
  200. {
  201.     return this->key;
  202. }
  203.  
  204. List::List()
  205. {
  206.     this->head = NULL;
  207.     this->size = 0;
  208. }
  209.  
  210. int main()
  211. {
  212.     List* list = new List();
  213.  
  214.     //list->addToEnd(3);
  215.     list->addToBeginning(2);
  216.     list->printList();
  217.     list->addToBeginning(1);
  218.     //list->addToEnd(4);
  219.     list->printList();
  220.  
  221.     if (list->contains(3))
  222.     {
  223.         cout << "contains 3" << endl;
  224.     }
  225.     else
  226.     {
  227.         cout << "not contains 3" << endl;
  228.     }
  229.     return 0;
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement