35657

Untitled

Jun 19th, 2023
990
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. class List {
  7. public:
  8.  
  9.     struct Node { // двусвязный список состоит из узлов
  10.         int value; // узел хранит информативную часть
  11.         Node* next; // указатель на следующий узел в списке
  12.         Node* prev; // указатель на предыдущий узел
  13.     };
  14.  
  15.     void Push_front(const int& value) {
  16.         if (size == 0) {
  17.             last = head = new Node{ value, nullptr, nullptr };
  18.             size++;
  19.             return;
  20.         }
  21.         Node* temp = new Node{ value, head, nullptr };
  22.         head->prev = temp;
  23.         head = temp;
  24.         size++;
  25.     }
  26.  
  27.     void Pop_front() {
  28.         if (size > 0) {
  29.             if (size == 1) {
  30.                 delete head;
  31.                 last = head = nullptr;
  32.                 size--;
  33.                 return;
  34.             }
  35.             Node* temp = head;
  36.             head = head->next;
  37.             delete temp;
  38.             head->prev = nullptr;
  39.             size--;
  40.         }
  41.     }
  42.  
  43.     void Print() {
  44.         Node* temp = head;
  45.         while (temp != nullptr) {
  46.             cout << temp->value << " ";
  47.             temp = temp->next;
  48.         }
  49.         cout << endl;
  50.     }
  51.  
  52.     int Size() const {
  53.         return size;
  54.     }
  55.  
  56. private:
  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