#include<iostream> usingnamespace std; struct node { int data; node *next; node *prev; }; void addnode(); void delnode(); void display(); void show(); void search(); node *start=NULL, *temp1, *temp2, *temp3; int main() { char ch; do { char i; cout<<"Press 'a' to add node , 'd' to delete"<<endl; cout<<" 's' for search, 'v' for display ,'e' for backward display"<<endl; cin>>i; switch (i) { case'a': addnode(); break; case'd': delnode(); break; case'v' : display(); break; case's': search(); break; case'e': show(); break; default: cout<<"Bad input"<<endl; break; } cout<<"want to process more y/n"<<endl; cin>>ch; } while(ch!='n'); return 0; } void addnode() //adding node { char r; temp1=new node; cout<<"enter int to store"<<endl; cin>>temp1->data; cout<<"press 's' to add in start,'m' for midd , 'e' for end"<<endl; cin>>r; switch (r) { case's': //add startif(start==NULL) { start=temp1; temp1->next=NULL; temp1->prev=NULL; } else { temp2=start; temp1->next=temp2; temp1->prev=NULL; start=temp1; temp2->prev=temp1; } break; case'e': //add endif(start==NULL) { start=temp1; temp1->next=NULL; temp1->prev=NULL; } else { temp2=start; while(temp2->next!=NULL) temp2=temp2->next; temp2->next=temp1; temp1->prev=temp2; temp1->next=NULL; } break; case'm': //add midint num; cout<<"enter node after which you want to enter"<<endl; cin>>num; temp2=start; for(int i=0;i<num;i++) { if(start==NULL) cout<<"given node not found"<<endl; else { temp3=temp2; temp2=temp2->next; } } temp1->next=temp2; temp3->next=temp1; temp1->prev=temp3; temp2->prev=temp1; break; } } void display() //displaying { temp3=start; if(start==NULL) cout<<"no node to display"<<endl; else { while(temp3->next!=NULL) { cout<<"Data stored is "<<temp3->data<<" at "<<temp3<<endl; temp3=temp3->next; } cout<<"Data stored is "<<temp3->data<<" at "<<temp3<<endl; } } void search() //searching { int p; cout<<"enter no to search"<<endl; cin>>p; temp1=start; while(temp1->next!=NULL) { if(temp1->data==p) { cout<<temp1->data<<" is stored in "<< temp1->next<<endl; } temp1=temp1->next; } } void delnode() //deleting { char d; cout<<"press 's' to delete from start,'m' for midd , 'e' for end"<<endl; cin>>d; switch (d) { case's': //delete startif(start==NULL) { cout<<"no node to delete"<<endl; } else { temp1=start; start=start->next; start->prev=NULL; delete temp1; } break; case'e': //delete endif(start==NULL) { cout<<"no node to delete"<<endl; } else { temp1=start; while(temp1->next!=NULL) { temp2=temp1; temp1=temp1->next; } delete temp1; temp2->next=NULL; } break; case'm': //delete midint num; cout<<"enter node you want to delete"<<endl; cin>>num; temp1=start; for(int i=1;i<num;i++) { if(start==NULL) cout<<"given node does not exist"<<endl; else { temp2=temp1; temp1=temp1->next; } } temp3=temp1->next; temp2->next=temp3; temp3->prev=temp2; delete temp1; break; } } void show() //backward display { cout<<"backward display"<<endl; temp3=start; if(start==NULL) cout<<"no node to display"<<endl; else { while(temp3->next!=NULL) { temp3=temp3->next; } while(temp3->prev!=NULL) { cout<<"Data stored is "<<temp3->data<<" at "<<temp3<<endl; temp3=temp3->prev; } cout<<"Data stored is "<<temp3->data<<" at "<<temp3<<endl; } }
No comments:
Post a Comment