Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. /*
  4.     <prev-- item --next> <prev-- _first --next> <prev-- second element --next>
  5.    <prev-- ...
  6. */
  7.  
  8. class List {
  9.  public:
  10.   struct Item {
  11.     int value{};
  12.     Item* previous{};
  13.     Item* next{};
  14.   };
  15.  
  16.   List() = default;
  17.   List(List const& second_list) {}
  18.   ~List() {
  19.     for (unsigned i = 0; i < size(); i++) {
  20.       delete_front();
  21.     }
  22.   }
  23.  
  24.   void push_front(int value) {
  25.     Item* item = new Item{};
  26.     item->value = value;
  27.  
  28.     if (is_empty()) {
  29.       _first = item;
  30.       _last = item;
  31.     } else {
  32.       item->next = _first;
  33.       _first->previous = item;
  34.       _first = item;
  35.     }
  36.  
  37.     _size++;
  38.   }
  39.  
  40.   void push_back(int value) {}
  41.  
  42.   int pop_front() {
  43.     if (is_empty()) {
  44.       return 0;
  45.     }
  46.     int first_value = _first->value;
  47.     delete_front();
  48.     return first_value;
  49.   }
  50.  
  51.   int pop_back() {}
  52.  
  53.   bool is_empty() const { return size() == 0; }
  54.   unsigned size() const { return _size; }
  55.  
  56.  private:
  57.   void delete_front() {
  58.     Item* second_element = _first->next;
  59.     delete _first;
  60.     _first = second_element;
  61.     _size--;
  62.   }
  63.  
  64.   Item* _first{};
  65.   Item* _last{};
  66.   unsigned _size{};
  67. };
  68.  
  69. int main() {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement