Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct node
  4. {
  5. int data;
  6. struct node *prev, *next;
  7. } soldier;
  8.  
  9. struct soldier *start, *last;
  10.  
  11. int DelListDoubly(int item);
  12. void insert_front(int item);
  13. void insert_end(int item);
  14. soldier* create_soldier(int sequence);
  15. soldier* create_reverse_circle(int n);
  16.  
  17. void insert_end(int item)
  18. {
  19. soldier *temp, *t;
  20.  
  21. temp = create_soldier(item);
  22. temp->next=NULL;
  23. if(start==NULL)
  24. {
  25. start=temp;
  26. temp->prev = temp;
  27. temp->next= temp;
  28.  
  29. }
  30. else
  31. {
  32. t = create_soldier(item);
  33. while(->next!=NULL)
  34. temp=temp->next;
  35. temp->data = temp;
  36. temp->prev = t;
  37. }
  38.  
  39. }
  40.  
  41. void insert_front(int item)
  42. {
  43. soldier *temp;
  44. temp = create_soldier(item);
  45. temp->prev = NULL;
  46. temp->next=root;
  47.  
  48. if(root!=NULL)
  49. root->prev=temp;
  50.  
  51. root = temp;
  52. }
  53.  
  54. soldier* create_soldier(int sequence){
  55. soldier *temp;
  56. temp=(soldier *) malloc(sizeof(soldier));
  57. temp->data = sequence;
  58. return temp;
  59. }
  60.  
  61. soldier* create_reverse_circle(int n){
  62. soldier *temp;
  63. soldier *t;
  64. for(int i=0;n>i;n--){
  65. if(*root==NULL){
  66. temp = create_soldier(n);
  67. temp->next = temp->prev = temp;
  68. *root=temp;
  69. }
  70. else{
  71. t=root;
  72. while(temp->next!=NULL)
  73. temp=temp->next;
  74.  
  75. t->next=temp;
  76. root->prev = temp;
  77. temp->prev = t;
  78. temp->next = root;
  79. }
  80. }
  81. return temp;
  82. }
  83.  
  84. soldier* rearrange_circle(soldier* head){
  85. soldier *temp;
  86. temp =(soldier *) malloc(sizeof(soldier));
  87. temp->data=head->next;
  88. }
  89.  
  90. void display(soldier* head){
  91. head=root;
  92. printf("List = ");
  93. while(head!=NULL){
  94. printf("%d ", head->data);
  95. head = head->next;
  96. }
  97. printf("/n");
  98. }
  99.  
  100. int kill(soldier* head, int n, int k){
  101.  
  102. }
  103.  
  104. int main()
  105. {
  106. root=NULL;
  107. soldier *main;
  108. int ch,ele,v;
  109. while(1)
  110. {
  111. printf("Menu: 1\nExit: 2\n: ");
  112. scanf("%d",&ch);
  113. if(ch==2)
  114. {
  115. printf("\nGOOD BYE.\n");
  116. break;
  117. }
  118. if(ch==1)
  119. {
  120. printf("\nEnter information(an integer): ");
  121. scanf("%d",&ele);
  122. main = create_reverse_circle(ele);
  123. display(main);
  124. break;
  125. }
  126.  
  127. /*
  128. if(ch==1)
  129. {
  130. printf("\nEnter information(an integer): ");
  131. scanf("%d",&ele);
  132. insert_front(ele);
  133. printf("\nPrinting ur link list.......");
  134. t=root;
  135. while(t!=NULL)
  136. {
  137. printf("%d ",t->data);
  138. t=t->next;
  139. }
  140. }
  141. if(ch==2)
  142. {
  143. printf("\nEnter information(an integer): ");
  144. scanf("%d",&ele);
  145. insert_end(ele);
  146. printf("\nPrinting your link list.......");
  147. t=root;
  148. while(t!=NULL)
  149. {
  150. printf("%d ",t->data);
  151. t=t->next;
  152. }
  153. }
  154. if(ch==3)
  155. {
  156. printf("\nEnter info which u want to DELETE: ");
  157. scanf("%d",&ele);
  158. v=DelListDoubly(ele);
  159. if(v==1)
  160. {
  161. printf("\nDeleting....");
  162. t=root;
  163. while(t!=NULL)
  164. {
  165. printf("%d ",t->data);
  166. t=t->next;
  167. }
  168. }
  169. else if(v==0)
  170. printf("\nThat info does not exist in the list");
  171.  
  172.  
  173. }
  174. */
  175. }
  176. return 0;
  177. }
  178.  
  179. int DelListDoubly(int item)
  180. {
  181. soldier *t;
  182. soldier *temp;
  183. if(root==NULL)
  184. return 0;
  185. if(root->data==item)
  186. {
  187. temp=root;
  188. root=root->next;
  189. if (root != NULL) //new condition for doubly
  190. root -> prev = NULL;
  191. free(temp);
  192. return 1;
  193. }
  194. t=root;
  195. while(t->next!=NULL && t->next->data != item)
  196. t=t->next;
  197. if(t->next==NULL)
  198. return 0;
  199. temp=t->next;
  200. t->next=t->next->next;
  201. if (t->next) //new condition for doubly
  202. t->next->prev = t;
  203.  
  204. free(temp);
  205. return 1;
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement