Advertisement
Adrita

sem 2 linked list lab 5

Jul 29th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct linked_list
  4. {
  5. int data;
  6. struct linked_list *next;
  7. };
  8. typedef struct linked_list *node;
  9.  
  10. node createnode()
  11. {
  12. node temp;
  13. temp=(node)malloc(sizeof(node));
  14. temp->next=NULL;
  15. return temp;
  16. }
  17. node add_node(node head,int value)
  18. {
  19. node temp=createnode(),p;
  20. temp->data=value;
  21. if(head==NULL)
  22. head=temp;
  23. else
  24. {
  25. p=head;
  26. while(p->next!=NULL)
  27. p=p->next;
  28. p->next=temp;
  29. }
  30. return head;
  31. }
  32. void print_node(node head)
  33. {
  34. node a;
  35. if(head==NULL)
  36. printf("empty\n");
  37. else
  38. {
  39. a=head;
  40. while(a!=NULL)
  41. {
  42. printf("%d ",a->data);
  43. a=a->next;
  44. }
  45. }
  46. printf("\n");
  47. }
  48. node update_node(int value1,int value2,node head)
  49. {
  50. node p;
  51. p=head;
  52. while(p->data!=value1)
  53. p=p->next;
  54. if(p==NULL)
  55. printf("%d is not in the list\n",value1);
  56. else
  57. p->data=value2;
  58.  
  59. return head;
  60.  
  61. }
  62. node delete_node(node head,int value)
  63. {
  64. node p=head,prev;
  65. if(p!=NULL&&p->data==value)
  66. {
  67. head=p->next;
  68. free(p);
  69. return head;
  70. }
  71. while(p!=NULL&&p->data!=value)
  72. {
  73. prev=p;
  74. p=p->next;
  75. }
  76.  
  77. if(p==NULL)
  78. printf("%d is not in the list\n",value);
  79. else
  80. {
  81. prev->next=p->next;
  82. free(p);
  83. }
  84. return head;
  85. }
  86. node insert_node(node head,int value1,int value2)
  87. {
  88. node p=createnode(),q;
  89. p->data=value2;
  90. q=head;
  91. while(q->data!=value1)
  92. q=q->next;
  93. if(q==NULL)
  94. printf("%d is not in the list\n",value1);
  95. else
  96. {
  97. p->next=q->next;
  98. q->next=p;
  99. }
  100. return head;
  101.  
  102. }
  103. int main()
  104. {
  105. printf("enter 1 to add node at the end\nenter 2 to print\nenter 3 to update node\nenter 4 to delete\nenter 5 to insert\nenter 0 to exit\n");
  106. int n;
  107. node head;
  108. head=NULL;
  109. while(1)
  110. {
  111. scanf("%d",&n);
  112. if(n==1)
  113. {
  114. int ndata;
  115. printf("new data ");
  116. scanf("%d",&ndata);
  117. head=add_node(head,ndata);
  118. }
  119. else if(n==2)
  120. {
  121. print_node(head);
  122. }
  123. else if(n==3)
  124. {
  125. int x,y;
  126. scanf("%d %d",&x,&y);
  127. update_node(x,y,head);
  128. }
  129. else if(n==4)
  130. {
  131. int x;
  132. scanf("%d",&x);
  133. head=delete_node(head,x);
  134. }
  135. else if(n==5)
  136. {
  137. int x,y;
  138. scanf("%d %d",&x,&y);
  139. head=insert_node(head,x,y);
  140. }
  141. else if(n==0)
  142. return 0;
  143. }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement