Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node node;
- struct Node
- {
- int data;
- node *pre;
- node *next;
- };
- node *head=NULL;
- void forward_display()
- {
- node *temp=head;
- printf("FORWARD DISPLAY: \n");
- while(temp!=NULL)
- {
- printf("%d->",temp->data);
- temp=temp->next;
- }
- printf("\n");
- }
- void reverse_display()
- {
- node *temp=head;
- printf("REVERSE DISPLAY: \n");
- while(temp->next!=NULL) temp=temp->next;
- node *temp1=temp;
- while(temp1!=NULL)
- {
- printf("%d->",temp1->data);
- temp1=temp1->pre;
- }
- printf("\n");
- }
- node *get_node(int data)
- {
- node *newnode=(node*)malloc(sizeof(node));
- newnode->pre=NULL;
- newnode->data=data;
- newnode->next=NULL;
- return newnode;
- }
- void first_insert(int data)
- {
- node *newnode=get_node(data);
- if(head==NULL)
- {
- head=newnode;
- return;
- }
- head->pre=newnode;
- newnode->next=head;
- head=newnode;
- }
- void last_insert(int data)
- {
- node *newnode=get_node(data);
- if(head==NULL)
- {
- head=newnode;
- return;
- }
- node *temp=head;
- while(temp->next!=NULL)
- {
- temp=temp->next;
- }
- newnode->pre=temp;
- temp->next=newnode;
- }
- void middle_insert(int data,int n)
- {
- node *newnode=get_node(data);
- node *temp=head;
- while(temp!=NULL)
- {
- if(temp->data==n) break;
- temp=temp->next;
- }
- node *temp1;
- temp1=temp->next;
- temp->next=newnode;
- newnode->next=temp1;
- newnode->pre=temp;
- }
- void delete_node(int n)
- {
- node *temp=head,*temp1;
- int i,count=0;
- while(temp!=NULL)
- {
- count++;
- if(temp->data==n) break;
- temp=temp->next;
- }
- temp1=head;
- if(count==1)
- {
- head=temp1->next;
- head->pre=NULL;
- free(temp1);
- return;
- }
- for(i=0;i<(count-2);i++)
- {
- temp1=temp1->next;
- }
- node *temp2=temp1->next;
- temp1->next=temp2->next;
- temp2->pre=temp1;
- free(temp2);
- }
- int main()
- {
- first_insert(5);
- first_insert(8);
- first_insert(7);
- first_insert(1);
- forward_display();
- reverse_display();
- last_insert(4);
- first_insert(3);
- first_insert(9);
- last_insert(11);
- last_insert(44);
- last_insert(45);
- forward_display();
- reverse_display();
- middle_insert(6,4);
- forward_display();
- reverse_display();
- delete_node(9);
- forward_display();
- reverse_display();
- delete_node(45);
- forward_display();
- reverse_display();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement