Thursday 15 November 2018

WRITE DOWN A C PROGRAM TO INSERT IN BEGINNING & END, DELETE A NODE IN BEGINNING & END, TRAVERSE FOR THE CIRCULAR - DOUBLY LINKED LIST (C-DLL) AND ALSO MODIFY A SPECIFIED NODE FOR THE CIRCULAR - 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 Circular - DOUBLY LINKED LIST (C-DLL) AND ALSO MODIFY A SPECIFIED NODE FOR THE CIRCULAR - 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. t->next=start;
  73. start->prev=t;
  74. }
  75. else
  76. {
  77. t1=start;
  78. while(t1->next!=start)
  79. {
  80. t1=t1->next;
  81. }
  82. t->next=start;
  83. t->prev=t1;
  84. t1->next=t;
  85. start->prev=t;
  86. }
  87. }
  88. void create_nodebegining(int x)
  89. {
  90. struct node *t,*t1;
  91. t1=start;
  92. t=(struct node*)malloc(sizeof(struct node));
  93. t->prev=NULL;
  94. t->data=x;
  95. t->next=NULL;
  96. while(t1->next!=start)
  97. {
  98. t1=t1->next;
  99. }
  100. start->prev=t;
  101. t->next=start;
  102. start=t;
  103. t1->next=start;
  104. t->prev=t1;
  105. traverse();
  106. }
  107. void delete_nodeend()
  108. {
  109. struct node *t,*t1;
  110. t=start;
  111. while(t->next!=start)
  112. {
  113. t1=t;
  114. t=t->next;
  115. }
  116. free(t);
  117. t1->next=start;
  118. traverse();
  119. }
  120. void delete_nodebegining()
  121. {
  122. struct node *t,*t1;
  123. t1=start;t=start;
  124. while(t1->next!=start)
  125. {
  126. t1=t1->next;
  127. }
  128. free(start);
  129. start=t->next;
  130. start->prev=t1;
  131. t1->next=start;
  132. traverse();
  133. }
  134. void modify(int x,int y)
  135. {
  136. struct node *t;
  137. t=start;
  138. while(t->data!=x)
  139. {
  140. t=t->next;
  141. }
  142. t->data=y;
  143. traverse();
  144. }

  145. void traverse()
  146. {
  147. struct node *t;
  148. t=start;
  149. while(t->next!=start)
  150. {
  151. printf("\n %d",t->data);
  152. t=t->next;
  153. }
  154. printf("\n %d\n\n",t->data);
  155. }

No comments:

Post a Comment