Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct data
- {
- int a;
- struct data *next;
- struct data *prev;
- } data;
- data *head=NULL;
- data *tail=NULL;
- void ins_at_first(int x)
- {
- data *new_node=(data*)malloc(sizeof(data));
- new_node->a=x;
- new_node->next=NULL;
- new_node->prev=NULL;
- if(head==NULL)
- {
- head=new_node;
- return;
- }
- new_node->next=head;
- head->prev=new_node;
- head=new_node;
- return;
- }
- void ins_at_end(int x)
- {
- data *new_node=(data*)malloc(sizeof(data));
- new_node->a=x;
- new_node->next=NULL;
- new_node->prev=NULL;
- if(head==NULL)
- {
- head=new_node;
- return;
- }
- data *temp=head;
- while(temp->next!=NULL)
- {
- temp=temp->next;
- }
- new_node->prev=temp;
- temp->next=new_node;
- return;
- }
- void ins_at_nth(int n, int x)
- {
- data *new_node=(data*)malloc(sizeof(data));
- new_node->a=x;
- new_node->next=NULL;
- new_node->prev=NULL;
- if(head==NULL)
- {
- head=new_node;
- return;
- }
- if(n==1)
- {
- head->next=new_node;
- new_node->prev=head;
- return;
- }
- data *temp=head;
- n=n-2;
- while(n--)
- {
- temp=temp->next;
- if(temp->next==NULL)
- {
- new_node->prev=temp;
- temp->next=new_node;
- return;
- }
- }
- new_node->next=temp->next;
- new_node->prev=temp;
- temp->next=new_node;
- return;
- }
- void del_by_pos(int n)
- {
- if(head==NULL)
- {
- printf("\n List was Empty Previously\n\n");
- return;
- }
- if(n==1)
- {
- data *del=head;
- head=head->next;
- if(head==NULL)
- {
- tail=NULL;
- free(del);
- return;
- }
- head->prev=NULL;
- free(del);
- return;
- }
- data *del=NULL;
- data *temp=head;
- n=n-2;
- while(n-- && temp->next!=NULL)
- {
- temp=temp->next;
- }
- del=temp->next;
- if(del==tail)
- {
- temp=tail;
- temp->next=NULL;
- free(del);
- return;
- }
- temp->next=del->next;
- del->next->prev=temp;
- free(del);
- return;
- }
- void reset()
- {
- head=NULL;
- tail=NULL;
- return;
- }
- void print()
- {
- data *temp=head;
- if(head==NULL)
- {
- printf("Empty\n");
- }
- while(temp!=NULL)
- {
- printf("%d ",temp->a);
- temp=temp->next;
- }
- printf("\n");
- }
- int main()
- {
- int a,v,w,x,n,m,o;
- while(1)
- {
- printf("1.Insert At First\n");
- printf("2.Insert At End\n");
- printf("3.Insert At n_th Position\n");
- printf("4.Delete By Position\n");
- printf("5.Delete By Value\n");
- printf("8.Print\n");
- printf("9.RESET LINK LIST\n");
- printf("\n 0 for Al-Bida{-)\n");
- printf("\n Command:");
- scanf("%d",&w);
- if(w==1)
- {
- printf("Enter an integer Number:");
- scanf("%d",&x);
- ins_at_first(x);
- }
- if(w==2)
- {
- printf("Enter an integer Number:");
- scanf("%d",&x);
- ins_at_end(x);
- }
- if(w==3)
- {
- printf("Declear The Position:");
- scanf("%d",&n);
- printf("Enter an integer Number:");
- scanf("%d",&x);
- ins_at_nth(n,x);
- }
- if(w==4)
- {
- printf("\nDeclear The Specific Position:");
- scanf("%d",&n);
- del_by_pos(n);
- }
- if(w==8)
- {
- printf("\n Result: ");
- print();
- printf("\n");
- }
- if(w==9)
- {
- printf("\n Reseted Successfully\n");
- reset();
- }
- if(w==0)
- {
- printf("\n Jajakalla_khayer..[muftY]\n");
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement