Guest User

Untitled

a guest
Feb 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. struct node {
  7.     public:
  8.     node* next;
  9.     node* prev;
  10.     int data;
  11. };
  12.  
  13. class linkedlist {
  14.  
  15.     public:
  16.     node* current;
  17.     node* first;
  18.  
  19.     linkedlist() {
  20.     }
  21.     ~linkedlist() {
  22.         node* currentNode = first;
  23.         do {
  24.             node* temp = currentNode->next;
  25.             delete currentNode;
  26.             currentNode = temp;
  27.         } while(currentNode->next);
  28.     }
  29.     void add(int string) {
  30.         if(!first) {
  31.             first = new node;
  32.             current = first;
  33.             current->next = NULL;
  34.             current->data = string;
  35.         } else {
  36.             current->data = string;
  37.  
  38.             node* nextNode = new node;
  39.             nextNode->data = 0;
  40.             nextNode->next = NULL;
  41.  
  42.             current->next = nextNode;
  43.             nextNode->prev = current;
  44.  
  45.             current = nextNode;
  46.         }
  47.     }
  48.     int remove(int pos) {
  49.         int count=0;
  50.         node* currentNode = first;
  51.         if(!first) return -1;
  52.  
  53.         if(!first->next) {
  54.             int temp = first->data;
  55.             delete first;
  56.             first=NULL;
  57.             current=NULL;
  58.             return temp;
  59.         }
  60.  
  61.         do {
  62.             if(count++ == pos) {
  63.                 node* temp = currentNode->next;
  64.                 if(temp) {
  65.                     temp->prev = currentNode->prev;
  66.                     if(currentNode == first) {
  67.                         first = currentNode->next;     
  68.                     }
  69.                 }
  70.                 (currentNode->prev)->next = temp;
  71.                 int retval = currentNode->data;
  72.                 delete currentNode;
  73.                 return retval;
  74.             }
  75.             currentNode = currentNode->next;
  76.         } while(currentNode->next);
  77.         return -1;
  78.     }
  79.     node* find(int string) {
  80.         node* currentNode = first;
  81.         do {
  82.             if(string == currentNode->data) return currentNode;
  83.             currentNode = currentNode->next;
  84.         } while(currentNode->next);
  85.         return NULL;
  86.     }
  87.     int size() {
  88.         int count=0;
  89.         node* currentNode = first;
  90.         if(!first) return 0;
  91.         do {
  92.             count++;
  93.             currentNode = currentNode->next;
  94.         } while(currentNode->next);
  95.         return count;
  96.     }
  97.     node* find_pos(int pos) {
  98.         node* currentNode = first;
  99.         do {
  100.             if(!pos--) return currentNode;
  101.             currentNode = currentNode->next;
  102.         } while(currentNode->next);
  103.     }
  104. };
Add Comment
Please, Sign In to add comment