Thursday, 15 November 2018

Write down a C Program to insert in beginning & end, delete a node in beginning & end, Traverse for the Doubly Linked List and also modify a specified node for the Doubly Linked List using Global start variable & call by reference & by using the Switch Case.

Write down a C Program to insert in beginning & end, delete a node in beginning & end, Traverse for the Doubly Linked List and also modify a specified node for the Doubly Linked List using Global start variable & call by reference & by using the Switch Case.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. struct node 
  5. {
  6. struct node *prev;
  7. int data;
  8. struct node *next;
  9. };
  10. struct node *start=NULL;
  11. void create_nodebegining(int);
  12. void create_nodeend(int);
  13. void delete_nodebegining();
  14. void delete_nodeend();
  15. void modify(int,int);
  16. void traverse();
  17. int main()
  18. {
  19. int data,i,n,ch,data1;
  20. printf("\n Enter The Value of data to be Entered:\n");
  21. scanf("%d",&n);
  22. for(i=0;i<n;i++)
  23. {
  24. printf("\n Enter The Value Should be Enter In Data of Node:\n");
  25. scanf("%d",&data);
  26. create_nodeend(data);
  27. }
  28. printf("\n Please Enter Your Choise \n ");
  29. printf("\n Press 1 for Insert in Beginning \n Press 2 for Insert in end \n Press 3 Delete in Beginning \n Press 4 for delete in end \n Press 5 for modify \n press 6 for traverse \n");
  30. scanf("%d",&ch);
  31. switch(ch)
  32. {
  33. case 1:
  34. printf("\n Enter The Value For Node Data:\n");
  35. scanf("%d",&data);
  36. create_nodebegining(data);
  37. break;
  38. case 2:
  39. printf("\n Enter The Value For Node Data:\n");
  40. scanf("%d",&data);
  41. create_nodeend(data);
  42. break;
  43. case 3:
  44. delete_nodebegining();
  45. break;
  46. case 4:
  47. delete_nodeend();
  48. break;
  49. case 5:
  50. printf("\n Enter The Data To be Modified:\n");
  51. scanf("%d",&data1);
  52. printf("\n Enter The Data Modified:\n");
  53. scanf("%d",&data);
  54. modify(data1,data);
  55. break;
  56. case 6:
  57. traverse();
  58. break;
  59. }
  60. traverse();
  61. }
  62. void create_nodeend(int x)
  63. {
  64. struct node *t,*t1;
  65. t=(struct node*)malloc(sizeof(struct node));
  66. t->prev=NULL;
  67. t->data=x;
  68. t->next=NULL;
  69. if(start==NULL)
  70. {
  71. start=t;
  72. }
  73. else
  74. {
  75. t1=start;
  76. while(t1->next!=NULL)
  77. {
  78. t1=t1->next;
  79. }
  80. t1->next=t;
  81. t->prev=t1;
  82. }
  83. }
  84. void create_nodebegining(int x)
  85. {
  86. struct node *t,*t1;
  87. t1=start;
  88. t=(struct node*)malloc(sizeof(struct node));
  89. t->prev=NULL;
  90. t->data=x;
  91. t->next=t1;
  92. t1->prev=t;
  93. start=t;
  94. traverse();
  95. }
  96. void delete_nodeend()
  97. {
  98. struct node *t,*t1;
  99. t=start;
  100. while(t->next!=NULL)
  101. {
  102. t1=t;
  103. t=t->next;
  104. }
  105. free(t);
  106. t1->next=NULL;
  107. traverse();
  108. }
  109. void delete_nodebegining()
  110. {
  111. struct node *t,*t1;
  112. t1=start;
  113. start=t1->next;
  114. start->prev=NULL;
  115. traverse();
  116. }
  117. void modify(int x,int y)
  118. {
  119. struct node *t;
  120. t=start;
  121. while(t->data!=x)
  122. {
  123. t=t->next;
  124. }
  125. t->data=y;
  126. traverse();
  127. }

  128. void traverse()
  129. {
  130. struct node *t;
  131. t=start;
  132. while(t->next!=NULL)
  133. {
  134. printf("\n %d",t->data);
  135. t=t->next;
  136. }
  137. printf("\n %d\n\n",t->data);
  138. while(t->prev!=NULL)
  139. {
  140. printf("\n %d",t->data);
  141. t=t->prev;
  142. }
  143. printf("\n %d\n\n",t->data);
  144. }

No comments:

Post a Comment