Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node
- {
- int data;
- struct Node*next, *prev;
- }node;
- node*head=NULL,*tail;
- void insert_end (int data)
- {
- node*newnode;
- newnode=(node*)malloc(sizeof(node));
- newnode->data=data;
- newnode->next=NULL;
- newnode->prev=NULL;
- if(head==NULL)
- {
- head=newnode;
- tail=newnode;
- }
- else
- {
- node*current=head;
- while(current->next!=NULL)
- {
- current=current->next;
- }
- current->next=newnode;
- newnode->prev=current;
- tail=newnode;
- }
- }
- void insert_beginning (int data)
- {
- node*newnode;
- newnode=(node*)malloc(sizeof(node));
- newnode->data=data;
- newnode->next=NULL;
- newnode->prev=NULL;
- if(head==NULL)
- {
- head=newnode;
- tail=newnode;
- }
- else
- {
- newnode->next=head;
- head->prev=newnode;
- head=newnode;
- }
- }
- void insert_any_position(int data)
- {
- int count=1,n;
- printf("Enter the position: ");
- scanf("%d", &n);
- node*newnode;
- newnode=(node*)malloc(sizeof(node));
- newnode->data=data;
- newnode->next=NULL;
- newnode->prev=NULL;
- if(head==NULL)
- {
- tail=newnode;
- head=newnode;
- }
- else if(n==1)
- {
- newnode->next=head;
- head->prev=newnode;
- head=newnode;
- }
- else
- {
- node*current=head;
- while(count<n-1)
- {
- current=current->next;
- count++;
- }
- if(current->next==NULL)
- {
- tail=newnode;
- current->next=newnode;
- newnode->prev=current;
- }
- else
- {
- newnode->next=current->next;
- current->next->prev=newnode;
- current->next=newnode;
- newnode->prev=current;
- }
- }
- }
- void del_position()
- {
- node*current=head;
- node*previous;
- int count=1,n;
- printf("Enter the position: ");
- scanf("%d", &n);
- if(n==1)
- {
- head=head->next;
- head->prev=NULL;
- free(current);
- }
- else
- {
- node*current=head;
- while(count<n)
- {
- previous=current;
- current=current->next;
- count++;
- }
- if(current->next==NULL)
- {
- previous->next=NULL;
- tail=previous;
- free(current);
- }
- else
- {
- previous->next=current->next;
- current->next->prev=previous;
- free(current);
- }
- }
- }
- void del_data()
- {
- node*current=head;
- node*previous;
- printf("Which data you want to delete : ");
- int n;
- scanf("%d", &n);
- if(head->data==n)
- {
- head=head->next;
- head->prev=NULL;
- free(current);
- }
- else
- {
- while(current!=NULL && current->data!=n)
- {
- previous=current;
- current=current->next;
- }
- if(current!=NULL)
- {
- if(current->next==NULL)
- {
- previous->next==NULL;
- tail=previous;
- free(current);
- }
- else
- {
- previous->next=current->next;
- current->next->prev=previous;
- free(current);
- }
- }
- else
- {
- printf("Data not founf\n");
- }
- }
- }
- void searchdata()
- {
- node*current=head;
- int f=0,n;
- printf("search data : ");
- scanf("%d", &n);
- while(current!=NULL)
- {
- if(current->data==n)
- {
- f=1;
- break;
- }
- current=current->next;
- }
- if(f==1)
- {
- printf("found data\n");
- }
- else
- {
- printf("Not found data\n");
- }
- }
- void searchdata2()
- {
- node*current=tail;
- int f=0,n;
- printf("search data : ");
- scanf("%d", &n);
- while(current!=NULL)
- {
- if(current->data==n)
- {
- f=1;
- break;
- }
- current=current->prev;
- }
- if(f==1)
- {
- printf("found data\n");
- }
- else
- {
- printf("Not found data\n");
- }
- }
- void countdata()
- {
- node*current=head;
- int count=0;
- while(current!=NULL)
- {
- count++;
- current=current->next;
- }
- printf("Total node= %d\n",count);
- }
- void countdata2()
- {
- node*current=tail;
- int count=0;
- while(current!=NULL)
- {
- count++;
- current=current->prev;
- }
- printf("Total node= %d\n",count);
- }
- void sumdata()
- {
- node*current=head;
- int sum=0;
- while(current!=NULL)
- {
- sum=sum+current->data;
- current=current->next;
- }
- printf("Total node= %d\n",sum);
- }
- void sumdata2()
- {
- node*current=tail;
- int sum=0;
- while(current!=NULL)
- {
- sum=sum+current->data;
- current=current->prev;
- }
- printf("Total node= %d\n",sum);
- }
- void print()
- {
- node*current=head;
- printf("Newlist is: ");
- while(current!=NULL)
- {
- printf("%d ",current->data);
- current=current->next;
- }
- printf("\n\n");
- }
- void print2()
- {
- node*current=tail;
- printf("Newlist is: ");
- while(current!=NULL)
- {
- printf("%d ",current->data);
- current=current->prev;
- }
- printf("\n\n");
- }
- int main()
- {
- int i,n,num,t,r,y;
- printf("Enter The Elements: ");
- scanf("%d",&num);
- for(i=1; i<=num; i++)
- {
- printf("Enter The number: ");
- scanf("%d",&n);
- printf("1.End! 2.beginning\n");
- printf("3.Any position!\n");
- scanf("%d",&t);
- if(t==1) insert_end(n);
- else if(t==2)insert_beginning(n);
- else if(t==3) insert_any_position(n);
- print();
- }
- printf("How many data you want to delete: ");
- scanf("%d",&r);
- printf("\n");
- while(r--)
- {
- printf("1.Delete data 2.Delete Position\n");
- scanf("%d",&y);
- if(y==2) del_position();
- if(y==1) del_data();
- print();
- print2();
- }
- countdata();
- countdata2();
- sumdata();
- sumdata2();
- searchdata();
- searchdata2();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment