Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- struct node {
- public:
- node* next;
- node* prev;
- int data;
- };
- class linkedlist {
- public:
- node* current;
- node* first;
- linkedlist() {
- }
- ~linkedlist() {
- node* currentNode = first;
- do {
- node* temp = currentNode->next;
- delete currentNode;
- currentNode = temp;
- } while(currentNode->next);
- }
- void add(int string) {
- if(!first) {
- first = new node;
- current = first;
- current->next = NULL;
- current->data = string;
- } else {
- current->data = string;
- node* nextNode = new node;
- nextNode->data = 0;
- nextNode->next = NULL;
- current->next = nextNode;
- nextNode->prev = current;
- current = nextNode;
- }
- }
- int remove(int pos) {
- int count=0;
- node* currentNode = first;
- if(!first) return -1;
- if(!first->next) {
- int temp = first->data;
- delete first;
- first=NULL;
- current=NULL;
- return temp;
- }
- do {
- if(count++ == pos) {
- node* temp = currentNode->next;
- if(temp) {
- temp->prev = currentNode->prev;
- if(currentNode == first) {
- first = currentNode->next;
- }
- }
- (currentNode->prev)->next = temp;
- int retval = currentNode->data;
- delete currentNode;
- return retval;
- }
- currentNode = currentNode->next;
- } while(currentNode->next);
- return -1;
- }
- node* find(int string) {
- node* currentNode = first;
- do {
- if(string == currentNode->data) return currentNode;
- currentNode = currentNode->next;
- } while(currentNode->next);
- return NULL;
- }
- int size() {
- int count=0;
- node* currentNode = first;
- if(!first) return 0;
- do {
- count++;
- currentNode = currentNode->next;
- } while(currentNode->next);
- return count;
- }
- node* find_pos(int pos) {
- node* currentNode = first;
- do {
- if(!pos--) return currentNode;
- currentNode = currentNode->next;
- } while(currentNode->next);
- }
- };
Add Comment
Please, Sign In to add comment