Подкорректировать код так, чтобы можно было работать с любым количеством очередей - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> #define FALSE 0 #define TRUE 1 typedef struct item { int data; struct item *next; } Item; void Add(void); void DeleteAll(void); void Del_Element(void); void Display(void); void Clear(void); Item *head = NULL, *tail = NULL; main() { int done = FALSE; char c; while (!done) { printf("\n\nAdd.................(A)\nClear...............(C)\nDelete_Element......(D)\nDisplay.............(S)\nQuit................(Q)\n"); c = getch(); switch (toupper(c)) { case 'A': Add(); break; case 'C': DeleteAll(); break; case 'Q': done = TRUE; break; case 'D': Del_Element(); break; case 'S' : Display(); break; } } printf("\n"); Clear(); return 0; } void Add(void) { Item* p; int dtt; p = (Item *)malloc(sizeof(Item)); printf("vvedite data: "); scanf("%d", &dtt); p->data = dtt; p->next = NULL; if (head == NULL) head = p; else tail->next = p; tail = p; } void DeleteAll(void) { Item* p = head; if (head != NULL) { head = head->next; if (head = NULL) tail = NULL; free(p); } } void Display(void) { Item* p = head; if (p == NULL) printf("\nQueue is empty"); else printf("\nQueue: "); while (p != NULL) { printf("\n%d", p->data); p = p->next; } } void Clear(void) { Item *p = head; while (head != NULL) { head = head->next; free(p); p = head; } } void Del_Element(void) { Item* p = head; if (head != NULL) head=head->next; }
Решение задачи: «Подкорректировать код так, чтобы можно было работать с любым количеством очередей»
textual
Листинг программы
struct _queue { Item * head; Item * tail; } Queue;
Объяснение кода листинга программы
- Объявляется структура данных
_queue
состоящая из двух указателей на элементы типаItem
:head
иtail
. - Инициализируется переменная
Queue
типа_queue
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д