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 insert_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;
- tail = new_node;
- return;
- }
- new_node -> next = head;
- new_node -> prev = NULL;
- head = new_node;
- }
- void insert_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;
- tail=new_node;
- return;
- }
- new_node->prev=tail;
- tail -> next = new_node;
- tail=new_node;
- }
- void insert_at_nth(int n,int x)
- {
- Data *newnode=(Data*)malloc(sizeof(Data));
- newnode->a=x;
- newnode->next=NULL;
- Data *temp=head;
- if(head == NULL || n == 1)
- {
- newnode -> next = head;
- head->prev = newnode;
- head = newnode;
- tail=newnode;
- return;
- }
- n=n-2;
- while(n-- && temp -> next != NULL)
- {
- temp=temp->next;
- }
- newnode->next=temp->next;
- temp->next->prev=newnode;
- newnode->prev=temp;
- temp->next=newnode;
- }
- void del_by_pos(int n)
- {
- Data *temp=head;
- if(n==1)
- {
- head = temp -> next;
- head -> prev = NULL;
- free(temp);
- return;
- }
- else
- {
- n=n-2;
- while(n-- && temp != NULL)
- {
- temp=temp -> next;
- }
- Data *del= temp -> next;
- temp -> next = del-> next;
- del -> prev = temp;
- free(del);
- temp = head;
- while(temp != NULL)
- {
- printf("%d ", temp -> a);
- temp = temp -> next;
- }
- printf("\n");
- }
- }
- int count()
- {
- int cnt=0;
- Data *temp = head;
- while(temp != NULL)
- {
- temp = temp -> next;
- ++cnt;
- }
- printf("Total nodes %d\n",cnt);
- return cnt;
- }
- int Add()
- {
- int sum=0;
- Data *temp = head;
- sum = temp -> a;
- while(temp -> next != NULL)
- {
- temp = temp -> next;
- sum = sum + temp -> a;
- }
- printf("Total sum %d\n",sum);
- return sum;
- }
- void search(int x)
- {
- int c=0;
- Data *temp = head;
- while(temp != NULL)
- {
- if (temp -> a == x)
- {
- ++c;
- }
- temp = temp -> next;
- }
- if (c>0)
- {
- printf("Match Found\n");
- }
- else
- printf("Match Not Found\n");
- }
- void Avr()
- {
- float av;
- int sum=0,cnt=0;
- Data *temp = head;
- sum = temp -> a;
- while(temp -> next != NULL)
- {
- temp = temp -> next;
- sum = sum + temp -> a;
- ++cnt;
- }
- av = ((sum*1.00)/(cnt*1.00));
- printf ("Average %.2lf\n",av);
- }
- void Print()
- {
- Data *temp = head;
- while(temp != NULL)
- {
- printf("%d ", temp -> a);
- temp = temp -> next;
- }
- printf("\n");
- }
- int main()
- {
- insert_at_end(6);
- insert_at_first(5);
- insert_at_first(4);
- insert_at_first(3);
- insert_at_end(6);
- insert_at_end(7);
- Print();
- count();
- Add();
- search(3);
- Avr();
- del_by_pos(2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement