Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3.  
  4. class List
  5. {
  6.     struct Node
  7.     {
  8.         Node * next = nullptr;
  9.         int data = 0;
  10.     };
  11.     Node *root = nullptr;
  12.     unsigned int size = 0;
  13.  
  14. public:
  15.     void push_front(int data)
  16.     {
  17.         if (root == nullptr)
  18.         {
  19.             root = new Node();
  20.             root->data = data;
  21.         }
  22.         else
  23.         {
  24.             Node *temp = new Node();
  25.             temp->data = data;
  26.             temp->next = root;
  27.             root = temp;
  28.         }
  29.         ++size;
  30.     }
  31.     void push_back(int data)
  32.     {
  33.         if (root == nullptr)
  34.         {
  35.             root = new Node();
  36.             root->data = data;
  37.         }
  38.         else
  39.         {
  40.             Node *temp = new Node();
  41.             temp->data = data;
  42.             temp->next = nullptr;
  43.             Node *last = root;
  44.             while (last->next != nullptr)
  45.                 last = last->next;
  46.             last->next = temp;
  47.         }
  48.         ++size;
  49.     }
  50.     int pop_front() {
  51.         if (root == nullptr)
  52.             return 0;
  53.         else {
  54.             Node *blast = root;
  55.             while ((blast->next != nullptr)||(blast->next->next != nullptr))
  56.                 blast = blast->next;
  57.             int data = blast->next->data;
  58.             delete blast->next;
  59.             blast->next = nullptr;
  60.             return data;
  61.         }
  62.         --size;
  63.     }
  64.     int pop_back() {
  65.         if (root == nullptr)
  66.             return 0;
  67.         else {
  68.             int data = root->data;
  69.             Node *next = root->next;
  70.             free(root);
  71.             root = root->next;
  72.             return data;
  73.         }
  74.         --size;
  75.     }
  76.  
  77.     unsigned int get_size() {
  78.         return size;
  79.     }
  80.  
  81.     int get_at(unsigned int pos) {
  82.         if (pos < size) {
  83.             int i = 0;
  84.             Node *temp = root;
  85.             while (i < pos) {
  86.                 temp = temp->next;
  87.                 ++i;
  88.             }
  89.             return temp->data;
  90.         } else
  91.             return 0;
  92.     }
  93.  
  94.     void clear_list() {
  95.         Node * s = nullptr;
  96.         Node * temp = root;
  97.         for (int i = size; i > 0; --i) {
  98.             s = temp->next;
  99.             free(temp);
  100.             temp = s;
  101.         }
  102.         root = nullptr;
  103.     }
  104.  
  105.     void remove_at(unsigned int pos) {
  106.         if (pos < size) {
  107.             int i = 0;
  108.             Node *temp = root;
  109.             while (i < pos-1) {
  110.                 temp = temp->next;
  111.                 ++i;
  112.             }
  113.             Node *s = temp->next;
  114.             temp->next = temp->next->next;
  115.             free(s);
  116.             --size;
  117.         }
  118.     }
  119.     void print()
  120.     {
  121.         Node *temp = root;
  122.         while (temp != nullptr)
  123.         {
  124.             std::cout << temp->data << '\n';
  125.             temp = temp->next;
  126.         }
  127.     }
  128.  
  129. };
  130.  
  131.  
  132. int main()
  133. {
  134.     List a;
  135.     a.push_front(345);
  136.     a.push_front(5);
  137.     a.push_back(88);
  138.  
  139.     a.remove_at(1);
  140.     a.print();
  141.  
  142.     system("pause");
  143.     return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement