Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct data {
  5.     int a;
  6.     struct data*next;
  7. } data;
  8. data*head=NULL;
  9. void insert_at_first(int x) {
  10.     data*newnode=(data*)malloc(sizeof(data));
  11.     newnode->a=x;
  12.     newnode->next=NULL;
  13.     if(head==NULL) {
  14.         head=newnode;
  15.         return;
  16.     }
  17.     newnode->next=head;
  18.     head=newnode;
  19. }
  20. void insert_at_end(int x) {
  21.     data*newnode=(data*)malloc(sizeof(data));
  22.     newnode->a=x;
  23.     newnode->next=NULL;
  24.     data*temp=head;
  25.     if(head==NULL) {
  26.         head=newnode;
  27.         return;
  28.     }
  29.     while(temp->next!=NULL) {
  30.         temp=temp->next;
  31.     }
  32.     temp->next=newnode;
  33. }
  34.  
  35. void insert_at_nth(int x,int n) {
  36.     data*newnode=(data*)malloc(sizeof(data));
  37.     newnode->a=x;
  38.     newnode->next=NULL;
  39.     data*temp=head;
  40.     if(head==NULL) {
  41.         head=newnode;
  42.         return;
  43.     }
  44.     if(n==1) {
  45.         temp->next=head;
  46.         head=temp;
  47.         return;
  48.     }
  49.     n=n-2;
  50.     while(n--&&temp->next!=NULL) {
  51.         temp=temp->next;
  52.     }
  53.     newnode->next=temp->next;
  54.     temp->next=newnode;
  55.  
  56. }
  57.  
  58. void delete_by_pos(int n) {
  59.     data*temp=head;
  60.     data*del=NULL;
  61.     if(head==NULL) {
  62.         printf("empty node\n");
  63.     }
  64.     if(n==1) {
  65.         del=head;
  66.         head=head->next;
  67.         free(del);
  68.         return;
  69.     }
  70.     n=n-2;
  71.     while(n--&&temp->next!=NULL) {
  72.         temp=temp->next;
  73.     }
  74.     del=temp->next;
  75.     temp->next=del->next;
  76.     free(del);
  77. }
  78.  
  79. void del_by_value(int x) {
  80.     data*temp=head;
  81.     data*del=NULL;
  82.     if(head==NULL) {
  83.         printf("enpty node\n");
  84.     } else if(head->a==x) {
  85.         head=head->next;
  86.         free(temp);
  87.         return;
  88.     }
  89.  
  90.     while(temp->next!=NULL) {
  91.         if(temp->next->a==x)
  92.             break;
  93.         temp=temp->next;
  94.     }
  95.     if(temp->next!=NULL) {
  96.         del=temp->next;
  97.         temp->next=del->next;
  98.         free(del);
  99.         return;
  100.     }
  101.  
  102. }
  103.  
  104.  
  105. int sum() {
  106.     data*temp=head;
  107.     int sum=0;
  108.     while(temp!=NULL) {
  109.         sum+=temp->a;
  110.         temp=temp->next;
  111.     }
  112.     return sum;
  113. }
  114.  
  115. double avrg() {
  116.     data*temp=head;
  117.     int sum=0;
  118.     int count=0;
  119.     while(temp!=NULL) {
  120.         sum+=temp->a;
  121.         temp=temp->next;
  122.         count++;
  123.     }
  124.     return sum/count;
  125. }
  126.  
  127.  
  128. void print() {
  129.     data*temp=head;
  130.     while(temp!=NULL) {
  131.         printf("%d\n",temp->a);
  132.         temp=temp->next;
  133.     }
  134.     printf("\n\n");
  135. }
  136.  
  137. int main() {
  138.     insert_at_first(5);
  139.     insert_at_first(4);
  140.     insert_at_first(3);
  141.     insert_at_first(2);
  142.     insert_at_first(1);
  143.     print();
  144.     insert_at_end(6);
  145.     insert_at_end(8);
  146.     print();
  147.     insert_at_nth(7,7);
  148.     print();
  149.     delete_by_pos(3);
  150.     print();
  151.     del_by_value(7);
  152.     print();
  153.     int t=sum();
  154.     printf("%d\n",t);
  155.     printf("%.2lf\n",avrg());
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement