Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h> /*malloc and atoi*/
  3. #include <string.h> /*strtok*/
  4. #define SIZE 100
  5.  
  6. typedef struct members {
  7.  
  8. int id;
  9. int cost;
  10. int seniority;
  11. struct members *next;
  12. struct members *prev;
  13. } members;
  14.  
  15. members *make_list(members **);
  16. void print_list(members **);
  17. void delete_from_list(members **, int);
  18. void free_list(members **);
  19.  
  20. int main()
  21. {
  22. members *h;
  23. make_list(&h);
  24. print_list(&h);
  25. delete_from_list(&h, 2);
  26. printf("after delete\n");
  27. print_list(&h);
  28. free_list(&h);
  29. printf("after free\n");
  30. print_list(&h);
  31.  
  32. return 0;
  33. }
  34.  
  35. members *make_list(members **head)
  36. {
  37. int isHead = 1;
  38. char buf[SIZE];
  39. char *p;
  40. members *tmp;
  41.  
  42. while(!feof(stdin))
  43. {
  44. /*allocate space*/
  45. printf("please input line, paramets delimited by commas\n");
  46. tmp = (members *)malloc(sizeof(members));
  47. if(tmp == NULL)
  48. {
  49. printf("Can't allocate memory\n");
  50. exit(1);
  51. }
  52.  
  53. if (fgets(buf, SIZE, stdin) == NULL)
  54. {
  55. printf("Reached EOF\n");
  56. if(isHead == 1)
  57. exit(1);
  58. else
  59. return (*head);
  60. }
  61.  
  62. /*put data*/
  63. p = strtok(buf, ",");
  64. tmp->id = atoi(p);
  65. p = strtok(NULL, ",");
  66. tmp->cost = atoi(p);
  67. p = strtok(NULL, ",");
  68. tmp->seniority = atoi(p);
  69.  
  70. /*arrange pointers*/
  71. if(isHead == 1)
  72. {
  73. *head = tmp;
  74. (*head)->prev = NULL;
  75. (*head)->next = NULL;
  76. isHead = 0;
  77. /*printf("my id is %d\n", (*head)->id);*/
  78. }
  79. else
  80. {
  81. tmp->next = *head;
  82. tmp->prev = NULL;
  83. (*head)->prev = tmp;
  84. (*head) = tmp;
  85. /*printf("my data is %d %d %d\n", tmp->id, tmp->cost, tmp->seniority);*/
  86. }
  87. }
  88.  
  89. return (*head);
  90. }
  91.  
  92. void print_list(members **head)
  93. {
  94. members *curr = *head;
  95.  
  96. while(curr)
  97. {
  98. printf("my data is %d %d %d\n", curr->id, curr->cost, curr->seniority);
  99. curr = curr->next;
  100. }
  101. }
  102.  
  103. void delete_from_list(members **head, int artist_num)
  104. {
  105. members *curr = *head;
  106. members *temp;
  107. int artist = 0;
  108. while(curr)
  109. {
  110. if(curr->id == artist_num)
  111. {
  112. temp = curr;
  113. if(curr->next !=NULL)
  114. curr->prev->next = curr->next;
  115. if(curr->prev !=NULL)
  116. curr->next->prev = curr->prev;
  117. if(curr->prev == NULL)
  118. curr->next->prev = NULL;
  119. if(curr->next == NULL)
  120. curr->prev->next = NULL;
  121.  
  122. free(temp);
  123. artist = 1;
  124. }
  125.  
  126. curr = curr->next;
  127. }
  128. if(artist == 0)
  129. {
  130. printf("artist wasn't found\n");
  131. }
  132. }
  133.  
  134. void free_list(members **head)
  135. {
  136. members *curr = *head;
  137. members *next;
  138. while(curr)
  139. {
  140. next = curr->next;
  141. free(curr);
  142. curr = next;
  143. }
  144. *head = NULL;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement