Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Node
- {
- int data;
- Node *prev;
- Node *next;
- };
- Node *head = NULL;
- Node *getnewnode(int data)
- {
- Node *newnode = new Node();
- (*newnode).data = data;
- (*newnode).prev = NULL;
- (*newnode).next = NULL;
- return newnode;
- }
- void InsertHead(int data)
- {
- Node *newnode = getnewnode(data);
- if(head==NULL)
- {
- head = newnode;
- }
- else
- {
- (*head).prev = newnode;
- (*newnode).next = head;
- head = newnode;
- }
- }
- void InsertTail (int data)
- {
- Node *newnode = getnewnode(data);
- Node *temp = head;
- if(head==NULL)
- {
- head = newnode;
- return;
- }
- else
- {
- while((*temp).next != NULL)
- {
- temp = (*temp).next;
- }
- (*temp).next = newnode;
- (*newnode).prev = temp;
- }
- }
- void InsertAnyPosition(int n, int data)
- {
- Node *newnode = getnewnode(data);
- if(head==NULL && n==1)
- {
- head = newnode;
- return;
- }
- else if(n==1)
- {
- (*head).prev = newnode;
- (*newnode).next = head;
- head = newnode;
- return;
- }
- else
- {
- Node *temp = head;
- int i;
- for(i=1; i<n-1; i++)
- {
- temp = (*temp).next;
- }
- Node *temp2 = (*temp).next;
- (*newnode).next=(*temp).next;
- (*temp).next=newnode;
- (*newnode).prev=temp;
- (*temp2).prev = newnode;
- }
- }
- void DeleteAnyIndex(int index)
- {
- Node *temp = head;
- if(index==1)
- {
- //head = (*temp).next;
- Node *temp2 = (*temp).next;
- head = temp2;
- (*temp2).prev = NULL;
- return;
- }
- else
- {
- int i;
- for(i=1; i<index-1; i++)
- {
- temp = (*temp).next;
- }
- Node *temp2 = (*temp).next;
- (*temp).next = (*temp2).next;
- Node *temp3 = (*temp2).next;
- (*temp3).prev = temp;
- }
- }
- void print ()
- {
- Node *temp = head;
- cout << "\nForword...."<<endl;
- while((*temp).next != NULL)
- {
- cout << (*temp).data << " ";
- temp = (*temp).next;
- }
- cout << (*temp).data <<endl;
- cout << "Reverse...."<<endl;
- while (temp != NULL)
- {
- cout << (*temp).data << " ";
- temp = (*temp).prev;
- }
- cout << "\n" << endl;
- }
- void Search(int data)
- {
- Node *temp = head;
- while((*temp).next != NULL)
- {
- if((*temp).data == data)
- {
- cout << "Found" <<endl;
- return;
- }
- temp = (*temp).next;
- }
- if((*temp).data == data)
- {
- cout << "Found"<<endl;
- }
- else
- {
- cout << "Not Found" <<endl;
- }
- }
- int main()
- {
- InsertHead(50);
- InsertHead(40);
- InsertHead(30);
- InsertHead(20);
- InsertHead(10);
- print();
- int data,del,value,d1,d2,d3,index;
- cout << "Insert Data at 1st position: ";
- cin >> d1;
- InsertHead(d1);
- print();
- cout << "Insert Data at Last Position: ";
- cin >> d2;
- InsertTail(d2);
- print();
- cout << "Insert Data at Any Index...."<<endl;
- cout << "Input data: ";
- cin >> d3;
- cout << "Input Index number: ";
- cin >> index;
- InsertAnyPosition(index,d3);
- print();
- cout << "\nDelete index: ";
- cin >> del;
- DeleteAnyIndex(del);
- print();
- cout << "\nInput data for Search: ";
- cin >> value;
- Search(value);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement