Подкорректировать код так, чтобы можно было работать с любым количеством очередей - 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.