Advertisement
Aniket_Goku

circular link list

Jan 31st, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. //singly circular link list
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5. struct sll
  6. {
  7. int info;
  8. struct sll *next;
  9. }*temp=NULL,*next=NULL,*start=NULL,*prev=NULL,*node=NULL;
  10. void create_node()
  11. {
  12. node=(struct sll *)malloc(sizeof(struct sll));
  13. if(node==NULL)
  14. {
  15. printf("\n NOde is not allocated\n");
  16. return;
  17. }
  18. printf("\n Enter the val: ");
  19. scanf("%d",&node->info);
  20. node->next=NULL;
  21.  
  22. }
  23. void display()
  24. {
  25. if(start==NULL)
  26. {
  27. printf("\n Csll is Empty");
  28. return;
  29. }
  30. printf("\n Displayed ");
  31. temp=start;
  32. if(start->next==start)
  33. {
  34. printf("\n %d",start->info);
  35. return;
  36. }
  37.  
  38. printf("\n %d",start->info);
  39. temp=start->next;
  40. while(temp!=start)
  41. {
  42. printf("\n %d",temp->info);
  43. temp=temp->next;
  44. }
  45. }
  46. void insert_at_posi()
  47. {
  48. int i,val,flag=0;
  49.  
  50. printf("\n Enter the position:");
  51. scanf("%d",&val);
  52. //temp=start;
  53. if(val==1)
  54. {
  55. create_node();
  56. if(start==NULL)
  57. {
  58. node->next=node;
  59. start=node;
  60. display();
  61. return;
  62. }
  63. else
  64. {
  65. node->next=start;
  66. temp=start->next;
  67. while(temp->next!=start)
  68. {
  69. temp=temp->next;
  70. }
  71. temp->next=node;
  72. start=node;
  73. display();
  74. return;
  75. }
  76. //{
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. }
  84. i=2;
  85. prev=start;
  86. temp=start->next;
  87. while(temp->next!=start)
  88. {
  89. if(i==val)
  90. {
  91. create_node();
  92. prev->next=node;
  93. node->next=temp;
  94. flag=1;
  95. display();
  96. break;
  97. }
  98. prev=temp;
  99.  
  100. i++;
  101.  
  102. temp=temp->next;
  103. }
  104. if(flag==0)
  105. {
  106. printf("\n Invalid possition ");
  107. }
  108. }
  109. void revers()
  110. {
  111. if(start==NULL || start->next==start)
  112. {
  113. display();
  114. return;
  115. }
  116. prev=start;
  117. temp=start->next;
  118. while(temp->next!=start)
  119. {
  120.  
  121. next=temp->next;
  122. temp->next=prev;
  123. prev=temp;
  124. temp=next;
  125.  
  126.  
  127. }
  128. start->next=temp;
  129. temp->next=prev;
  130. start=temp;
  131. display();
  132. }
  133. void del()
  134. {
  135. if(start==NULL)
  136. {
  137. display();
  138. return;
  139. }
  140. if(start->next==start)
  141. {
  142. printf("\n %d is deleted ",start->info);
  143. free(start);
  144. start=NULL;
  145. display();
  146. return;
  147. }
  148. prev=start;
  149. temp=start->next;
  150. while(temp->next!=start)
  151. {
  152. prev=temp;
  153. temp=temp->next;
  154. }
  155. prev->next=temp->next;
  156. printf("\n %d is deleted",temp->info);
  157. free(temp);
  158. display();
  159.  
  160. }
  161. int main()
  162. {
  163. int ch;
  164. clrscr();
  165. do
  166. {
  167. printf("\n Menu");
  168. printf("\n 1. Insert at posi");
  169. printf("\n 2. Delete at end");
  170. printf("\n 3. Revers the list");
  171. printf("\n 4. display");
  172. printf("\n Enter your choice: ");
  173. scanf("%d",&ch);
  174. switch(ch)
  175. {
  176. case 1:
  177. insert_at_posi();
  178. break;
  179.  
  180. case 2:
  181. del();
  182. break;
  183.  
  184. case 3:
  185. revers();
  186.  
  187. break;
  188.  
  189. case 4:
  190. display();
  191. break;
  192. }
  193. }while(ch>=1 && ch<=4);
  194. getch();
  195. return 0;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement