fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct node
  5. {
  6. int data;
  7. struct node *next;
  8. }*head,*var,*trav;
  9.  
  10. void insert_at_begning(int value)
  11. {
  12. var=(struct node *)malloc(sizeof (struct node));
  13. var->data=value;
  14. if(head==NULL)
  15. {
  16. head=var;
  17. head->next=NULL;
  18. }
  19. else
  20. {
  21. var->next=head;
  22. head=var;
  23. }
  24. }
  25.  
  26. void insert_at_end(int value)
  27. {
  28. struct node *temp;
  29. temp=head;
  30. var=(struct node *)malloc(sizeof (struct node));
  31. var->data=value;
  32. if(head==NULL)
  33. {
  34. head=var;
  35. head->next=NULL;
  36. }
  37. else
  38. {
  39. while(temp->next!=NULL)
  40. {
  41. temp=temp->next;
  42. }
  43. var->next=NULL;
  44. temp->next=var;
  45. }
  46. }
  47.  
  48. void insert_at_middle(int value, int loc)
  49. {
  50. struct node *var2,*temp;
  51. var=(struct node *)malloc(sizeof (struct node));
  52. var->data=value;
  53. temp=head;
  54.  
  55. if(head==NULL)
  56. {
  57. head=var;
  58. head->next=NULL;
  59. }
  60. else
  61. {
  62. while(temp->data!=loc)
  63. {
  64. temp=temp->next;
  65. }
  66. var2=temp->next;
  67. temp->next=var;
  68. var->next=var2;
  69. }
  70. }
  71.  
  72. int delete_from_middle(int value)
  73. {
  74. struct node *temp,*var;
  75. temp=head;
  76. while(temp!=NULL)
  77. {
  78. if(temp->data == value)
  79. {
  80. if(temp==head)
  81. {
  82. head=temp->next;
  83. free(temp);
  84. return 0;
  85. }
  86. else
  87. {
  88. var->next=temp->next;
  89. free(temp);
  90. return 0;
  91. }
  92. }
  93. else
  94. {
  95. var=temp;
  96. temp=temp->next;
  97. }
  98. }
  99. printf("data deleted from list is %d",value);
  100. }
  101.  
  102. int delete_from_end()
  103. {
  104. struct node *temp;
  105. temp=head;
  106. while(temp->next != NULL)
  107. {
  108. var=temp;
  109. temp=temp->next;
  110. }
  111. if(temp ==head)
  112. {
  113. head=temp->next;
  114. free(temp);
  115. return 0;
  116. }
  117. printf("data deleted from list is %d",temp->data);
  118. var->next=NULL;
  119. free(temp);
  120. return 0;
  121. }
  122.  
  123. void display()
  124. {
  125. trav=head;
  126. if(trav==NULL)
  127. {
  128. printf("\nList is Empty");
  129. }
  130. else
  131. {
  132. printf("\nElements in the List: ");
  133. while(trav!=NULL)
  134. {
  135. printf(" -> %d ",trav->data);
  136. trav=trav->next;
  137. break;
  138. }
  139. printf("\n");
  140.  
  141. }
  142.  
  143. }
  144.  
  145. int main()
  146. {
  147. int i=0;
  148. head=NULL;
  149.  
  150. while(1)
  151. {
  152. printf("\nenter the choice of operation to perform on linked list");
  153. scanf("%d",&i);
  154. switch(i)
  155. {
  156. case 1:
  157. {
  158. int value;
  159. printf("\nenter the value to be inserted");
  160. scanf("%d",&value);
  161. insert_at_begning(value);
  162. display();
  163. break;
  164. }
  165. case 2:
  166. {
  167. int value;
  168. printf("\nenter value to be inserted");
  169. scanf("%d",&value);
  170. insert_at_end(value);
  171. display();
  172. break;
  173. }
  174. case 3:
  175. {
  176. int value,loc;
  177. printf("\nafter which data you want to insert the data");
  178. scanf("%d",&loc);
  179. printf("\nenter the value to be inserted");
  180. scanf("%d",&value);
  181. insert_at_middle(value,loc);
  182. display();
  183. break;
  184. }
  185. case 4:
  186. {
  187. delete_from_end();
  188. display();
  189. break;
  190. }
  191. case 5:
  192. {
  193. int value;
  194. display();
  195. printf("\nenter the data that you want to delete from the list shown above");
  196. scanf("%d",&value);
  197. delete_from_middle(value);
  198. display();
  199. break;
  200. }
  201. case 6:
  202. {
  203. exit(0);
  204. }
  205. }
  206. }
  207. return 0;
  208. }
Success #stdin #stdout 0s 2296KB
stdin
6
7
stdout
enter the choice of operation to perform on linked list