Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Node
- {
- int data;
- Node* next;
- Node* prev;
- };
- Node* head = NULL;
- Node* getNewNode(int x) {
- Node* newNode = new Node();
- newNode->data = x;
- newNode->next = NULL;
- newNode->prev = NULL;
- return newNode;
- }
- void insertHead(int x) {
- Node* newNode = getNewNode(x);
- if (head == NULL)
- {
- head = newNode;
- return;
- }
- head->prev = newNode;
- newNode->next = head;
- head = newNode;
- }
- void insertLast(int x) {
- Node* newNode = getNewNode(x);
- Node* trav = head;
- while (trav->next != NULL)
- {
- trav = trav->next;
- }
- trav->next = newNode;
- newNode->prev = trav;
- }
- void insertAny(int x, int pos) {
- if (pos == 1)
- {
- insertHead(x);
- return;
- }
- Node* newNode = getNewNode(x);
- Node* trav = head;
- for (int i = 1; i < pos - 1; i++)
- {
- trav = trav->next;
- }
- newNode->prev = trav;
- newNode->next = trav->next;
- trav->next = newNode;
- if (newNode->next != NULL)
- {
- newNode->next->prev = newNode;
- }
- }
- void deleteHead() {
- Node* del = head;
- head = del->next;
- delete del;
- }
- //void deleteLast() {
- // Node* trav = head;
- // while (trav->next != NULL)
- // {
- // trav = trav->next;
- // }
- // Node* del = trav->prev;
- // del->next = NULL;
- // delete del;
- //}
- void deleteLast() {
- Node* del = head;
- while (del->next != NULL)
- {
- del = del->next;
- }
- del->prev->next = NULL;
- delete del;
- }
- void deleteAny(int pos) {
- if (pos == 1)
- {
- deleteHead();
- return;
- }
- Node* trav = head;
- for (int i = 1; i < pos; i++)
- {
- trav = trav->next;
- }
- if (trav->next == NULL)
- {
- deleteLast();
- return;
- }
- Node* del = trav;
- trav->prev->next = trav->next;
- trav->next->prev = trav->prev;
- delete del;
- }
- void print() {
- Node* trav = head;
- while (trav->next != NULL)
- {
- cout << trav->data << " ";
- trav = trav->next;
- }
- cout << trav->data << " ";
- }
- int main() {
- insertHead(20);
- insertHead(10);
- insertLast(40);
- insertAny(30, 3);
- print();
- cout << endl;
- deleteHead();
- deleteLast();
- print();
- cout << endl;
- deleteAny(2);
- print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment