Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Node {
  5.         int value;
  6.         Node *next, *prev;
  7.     };
  8. struct LinkedList{
  9.         Node *head;
  10.         Node *tail;
  11.  
  12.     LinkedList(){
  13.         head = NULL;
  14.         tail = NULL;
  15.     }
  16.  
  17.     void insertBegining(int value){
  18.         Node *node = new Node();
  19.         node->value = value;
  20.         node->next = head;
  21.         node->prev = NULL;
  22.         head = node;
  23.     }
  24.     void insertEnd(int value){
  25.         Node *node = new Node();
  26.         node->value = value;
  27.         node->next = NULL;
  28.         node->prev = tail;
  29.         tail = node;
  30.     }
  31.     int removeBegining(){
  32.         Node *node = head;
  33.         int ret = node->value;
  34.         head = head->next;
  35.         head->prev = NULL;
  36.         delete node;
  37.         return ret;
  38.     }
  39.     int removeEnd(){
  40.         Node *node = tail;
  41.         int ret = node->value;
  42.         tail = tail->prev;
  43.         tail->next = NULL;
  44.         delete node;
  45.         return ret;
  46.     }
  47.     int insertAfter(Node *node, Node *newNode)
  48.     {
  49.         newNode->next = node->next;
  50.         node->next = newNode;
  51.         newNode->prev = node;
  52.         newNode->next->prev = newNode;
  53.     }
  54.     int insertBefore(Node *node, Node *newNode)
  55.     {
  56.         newNode->prev = node->prev;
  57.         node->prev = newNode;
  58.         newNode->next = node;
  59.         newNode->prev->next = newNode;
  60.     }
  61. };
  62. int main() {
  63.     LinkedList list;
  64.     Node *node, *node2;
  65.     node->value = 2;
  66.     node2->value = 3;
  67.     list.insertBegining(4);
  68.     list.insertBegining(1);
  69.     list.insertAfter(list.head, node);
  70.     list.insertBefore(list.tail, node2);
  71.     list.insertEnd(5);
  72.  
  73.     cout << list.removeEnd() << endl;
  74.     cout << list.removeEnd() << endl;
  75.     cout << list.removeEnd() << endl;
  76.     cout << list.removeEnd() << endl;
  77.     cout << list.removeEnd() << endl;
  78.  
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement