Advertisement
_egorka_

list v0.001

Nov 13th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | None | 0 0
  1. /*Операции над структурой данных двухсвязнный список.
  2. 1) Начать работу
  3. 2) сделать список пустым
  4. 3) список пуст не пуст
  5. 4) установить указатель на начало списка
  6. 5) установить указатель в конец списка
  7. 6) проверка: указатель в начале списка?
  8. 7) проверка: указатель в конце списка?
  9. 8) передвинуть указатель списка вперёд
  10. 9) передвинуть указатель списка назад
  11. 10) показать значения элемента списка до указателя
  12. 11) показать значения элемента списка после указателя
  13. 12) удалить элемент списка до указателя
  14. 13) удалить элемент списка после указателя
  15. 14) взять элемент списка до указателя
  16. 15) взять элемент списка после указателя
  17. 16) изменить значение элемента списка до указателя
  18. 17) изменить значение элемента списка после указателя
  19. 18) добавить элемент до указателя
  20. 19) добавить элемент после указателя
  21. 20) распечатать список
  22. 21) закончить работу со списком
  23. В пустом списке указателя начала списка, конец списка, рабочий указатель существуют и их значения равны нулю.
  24. При выполнении всех операций кроме 8 и 9 рабочий указатель остаётся на месте.
  25. Задание:
  26. нужно написать программу которая реализует выполнение операций с двухсвязнным списком и после выполнения каждой
  27. операции на экране распечатывается список прямом и обратных направления с указанием места нахождения
  28. рабочего указателя.*/
  29. #include <stdio.h>
  30. #include <stdlib.h>
  31.  
  32. typedef struct list list;
  33.  
  34. struct list
  35. {
  36. int field;
  37. struct list *next;
  38. struct list *prev;
  39. };
  40.  
  41.  
  42. struct list * init(int a)
  43.  
  44. {
  45. struct list *lst;
  46. lst = (list*)malloc(sizeof(list));
  47. lst->field = a;
  48. lst->next = NULL;
  49. lst->prev = NULL;
  50. return(lst);
  51. }
  52.  
  53. list* CreatNew() {
  54. int c;
  55. list *new;
  56. new = (list*)malloc(sizeof(list));
  57. if (new == NULL) {
  58. printf("new == NULL\n");
  59. return NULL;
  60. }
  61. printf("input elem: ");
  62. scanf("%d", &c);
  63. new->next = NULL;
  64. new->field = c;
  65. return new;
  66. }
  67.  
  68. list* CreatElem(list *tmp, list **head, list *new) {
  69. if(head == NULL) {
  70. printf("error");
  71. return 0;
  72. }
  73. if(!*head) {
  74. *head = new;
  75. tmp = *head;
  76. } else {
  77. new->next = tmp->next;
  78. tmp->next = new;
  79. tmp = tmp->next;
  80. }
  81. return tmp;
  82. }
  83.  
  84. list* PrintList(list *head) {
  85. list *tmp;
  86. if (head == NULL) {
  87. printf("Your list is empty!\n");
  88. return 0;
  89. }
  90. tmp = head;
  91. while (tmp != NULL) {
  92. if (tmp->next == NULL) {
  93. printf("%c", tmp->field);
  94. printf(" ");
  95. return tmp;
  96. } else {
  97. printf("%c", tmp->field);
  98. tmp = tmp->next;
  99. }
  100. }
  101. }
  102.  
  103. int main()
  104. {
  105. int score = 0;
  106. int start = 0;
  107. int answer = 1;
  108. list *head = NULL;
  109. list *tail = NULL;
  110. list *tmp = NULL;
  111.  
  112. while(answer) {
  113. printf("\n 1 - start work with list\n");
  114. printf(" 2 - list to null\n");
  115. printf(" 3 - list is null?\n");
  116. printf(" 4 - pointer to head\n");
  117. printf(" 5 - is pointer at the end of list?\n");
  118. printf(" 6 - check: pointer at the top of the list?\n");
  119. printf(" 7 - check: pointer at the end of the list?\n");
  120. printf(" 8 - move the list pointer forward\n");
  121. printf(" 9 - move the list pointer back\n");
  122. printf("10 - show list item values before pointer\n");
  123. printf("11 - show list item values after pointer\n");
  124. printf("12 - delete list item before pointer\n");
  125. printf("13 - remove list item after pointer\n");
  126. printf("14 - take list item to pointer\n");
  127. printf("15 - take list item after pointer\n");
  128. printf("16 - change the value of a list item to a pointer\n");
  129. printf("17 - change the value of the list item after the pointer\n");
  130. printf("18 - add item before pointer\n");
  131. printf("19 - add item after pointer\n");
  132. printf("20 - print list\n");
  133. printf("21 - finish work with list\n");
  134. printf("22 - add element\n");
  135. scanf("%d", &answer);
  136. switch (answer) {
  137. case 1: {
  138. start = 1;
  139. printf("\n The program began work \n");
  140. break;
  141. }
  142. case 2: {
  143. if(!start)
  144. {printf("\n start the program at the beginning\n");
  145. break;}
  146.  
  147. break;
  148. }
  149. case 3: {
  150. if(!start)
  151. {printf("\n start the program at the beginning\n");}
  152. break;
  153. }
  154. case 4: {
  155. if(!start)
  156. {printf("\n start the program at the beginning\n");}
  157. break;
  158. }
  159. case 5: {
  160. if(!start)
  161. {printf("\n start the program at the beginning\n");}
  162. break;
  163. }
  164. case 6: {
  165. if(!start)
  166. {printf("\n start the program at the beginning\n");}
  167. break;
  168. }
  169. case 7: {
  170. if(!start)
  171. {printf("\n start the program at the beginning\n");}
  172. break;
  173. }
  174. case 8: {
  175. if(!start)
  176. {printf("\n start the program at the beginning\n");}
  177. break;
  178. }
  179. case 9: {
  180. if(!start)
  181. {printf("\n start the program at the beginning\n");}
  182. break;
  183. }
  184. case 10: {
  185. if(!start)
  186. {printf("\n start the program at the beginning\n");}
  187. break;
  188. }
  189. case 11: {
  190. if(!start)
  191. {printf("\n start the program at the beginning\n");}
  192. break;
  193. }
  194. case 12: {
  195. if(!start)
  196. {printf("\n start the program at the beginning\n");}
  197. break;
  198. }
  199. case 13: {
  200. if(!start)
  201. {printf("\n start the program at the beginning\n");}
  202. break;
  203. }
  204. case 14: {
  205. if(!start)
  206. {printf("\n start the program at the beginning\n");}
  207. break;
  208. }
  209. case 15: {
  210. if(!start)
  211. {printf("\n start the program at the beginning\n");}
  212. break;
  213. }
  214. case 16: {
  215. if(!start)
  216. {printf("\n start the program at the beginning\n");}
  217. break;
  218. }
  219. case 17: {
  220. if(!start)
  221. {printf("\n start the program at the beginning\n");}
  222. break;
  223. }
  224. case 18: {
  225. if(!start)
  226. {printf("\n start the program at the beginning\n");}
  227. break;
  228. }
  229. case 19: {
  230. if(!start)
  231. {printf("\n start the program at the beginning\n");}
  232. break;
  233. }
  234. case 20: {
  235. if(!start)
  236. {printf("\n start the program at the beginning\n");
  237. break;}
  238. if(tmp == NULL) {
  239. printf("your list is empty");
  240. break;
  241. }
  242. tmp = PrintList(head);
  243. break;
  244. }
  245. case 21: {
  246. if(!start)
  247. {printf("\n start the program at the beginning\n");}
  248. break;
  249. }
  250. case 22: {
  251. if(!start)
  252. {printf("\n start the program at the beginning\n");
  253. break;}
  254. score = score+1;
  255. tmp = CreatElem(tmp, &head, CreatNew());
  256. break;
  257. }
  258. case 23: {
  259. if(!start)
  260. {printf("\n start the program at the beginning \n");
  261. printf( "number of elements in a singly linked list: %d\n", score);
  262. break;}
  263. printf( "number of elements in a singly linked list: %d\n", score);
  264. break;
  265. }
  266. default :{
  267. break;
  268. }
  269. }
  270. }
  271. return 0;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement