Advertisement
35657

Untitled

Mar 23rd, 2024
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. class List {
  7. public:
  8.  
  9.     void push_front(const int& value) {
  10.         if (size_ == 0) {
  11.             last_ = head_ = new Node{ value, nullptr, nullptr };
  12.             size_++;
  13.             return;
  14.         }
  15.         Node* temp = new Node{ value, head_, nullptr };
  16.         head_->prev = temp;
  17.         head_ = temp;
  18.         size_++;
  19.     }
  20.  
  21.     void pop_front() {
  22.         if (size_ > 0) {
  23.             if (size_ == 1) {
  24.                 delete head_;
  25.                 last_ = head_ = nullptr;
  26.                 size_--;
  27.                 return;
  28.             }
  29.             Node* temp = head_;
  30.             head_ = head_->next;
  31.             delete temp;
  32.             head_->prev = nullptr;
  33.             size_--;
  34.         }
  35.     }
  36.  
  37.     void print() {
  38.         Node* temp = head_;
  39.         while (temp != nullptr) {
  40.             cout << temp->value << " ";
  41.             temp = temp->next;
  42.         }
  43.         cout << endl;
  44.     }
  45.  
  46.     int size() const {
  47.         return size_;
  48.     }
  49.  
  50. private:
  51.     struct Node { // двусвязный список состоит из узлов
  52.         int value; // узел хранит информативную часть
  53.         Node* next; // указатель на следующий узел в списке
  54.         Node* prev; // указатель на предыдущий узел
  55.     };
  56.  
  57.     int size_ = 0;
  58.     Node* head_ = nullptr;
  59.     Node* last_ = nullptr;
  60. };
  61.  
  62. int main() {
  63.     List list1;
  64.     for (int i = 0; i < 10; i++) {
  65.         list1.push_front(i + 1);
  66.     }
  67.     list1.print();
  68.     cout << list1.size() << endl;
  69.  
  70.     for (int i = 0; i < 3; i++) {
  71.         list1.pop_front();
  72.     }
  73.     list1.print();
  74.     cout << list1.size() << endl;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement