Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- struct node
- {
- int data;
- struct node *next;
- struct node *prev;
- };
- typedef struct node Node;
- Node* create_node(int item, Node *next,Node*prev)
- {
- Node* new_node=new Node();
- if(new_node==NULL)
- cout<<"Error"<<endl;
- else
- {
- new_node->data=item;
- new_node->next=next;
- new_node->prev=prev;
- }
- return new_node;
- }
- Node* prepend(int item,Node* head)
- {
- Node* new_node=create_node(item,head,NULL);
- return new_node;
- }
- Node* insertn(int item,Node* head,int key)
- {
- Node* new_node=create_node(item,NULL,NULL);
- if(head==NULL)
- cout<<"Error"<<endl;
- else
- {
- Node *current=new Node();
- current=head;
- while(current!=NULL&¤t->data!=key)
- current=current->next;
- if(current!=NULL)
- {
- new_node->next=current->next;
- current->next=new_node;
- new_node->prev=current;
- Node * w=current->next;
- w->prev=new_node;
- }
- else
- cout<<"Value not found"<<endl;
- }
- return head;
- }
- void display(Node *head)
- {
- cout<<"Linked list:"<<endl;
- while(head!=NULL)
- {
- cout<<head->data<<" ";
- head=head->next;
- }
- cout<<endl;
- }
- Node* remove_head(Node* head)
- {
- head=head->next;
- head->prev=NULL;
- return head;
- }
- Node* remove_tail(Node* head)
- {
- Node *current=new Node();
- Node *prev1=new Node();
- current=head;
- while(current->next!=NULL)
- {
- prev1=current;
- current=current->next;
- }
- prev1->next=NULL;
- return head;
- }
- Node* remove_value(Node* head,int key)
- {
- Node* temp=new Node();
- temp=head;
- Node* prev1=new Node();
- if(temp!=NULL&&temp->data==key)
- {
- head=temp->next;
- head->prev=NULL;
- return head;
- }
- while(temp!=NULL && temp->data!=key)
- {
- prev1=temp;
- temp=temp->next;
- }
- if(temp==NULL)
- {
- cout<<"Value not present"<<endl;
- return head;
- }
- Node* w=temp->next;
- prev1->next=temp->next;
- w->prev=prev1;
- return head;
- }
- int main()
- {
- Node* head=NULL;
- head=prepend(10,head);
- head=insertn(20,head,10);
- head=insertn(30,head,20);
- head=insertn(40,head,30);
- head=insertn(50,head,40);
- head=insertn(60,head,50);
- head=insertn(70,head,60);
- display(head);
- int t;
- cin>>t;
- for(int i=0; i<t; i++)
- {
- cout<<"Enter 1 to delete head,2 to delete tail, 3 to delete a value"<<endl;
- int n;
- cin>>n;
- if(n==1)
- {
- head=remove_head(head);
- display(head);
- }
- else if(n==2)
- {
- head=remove_tail(head);
- display(head);
- }
- else if(n==3)
- {
- cout<<"Enter the value"<<endl;
- int key;
- cin>>key;
- head=remove_value(head,key);
- display(head);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement