Реализовать все возможные операции для очереди - C (СИ)
Формулировка задачи:
Доброго времени суток) кому не составит большого труда, прошу помочь с заданием)
Реализовать все возможные операции
для очереди:
реализация очереди с помощью массива, реализация очереди с помощью списка, добавление элемента в конец очереди, поиск элемента в очереди, удаление элемента из очереди. Задание большое конечно, буду рад любой помощи с Вашей стороны) (язык желательно Си (не Си++))Решение задачи: «Реализовать все возможные операции для очереди»
textual
Листинг программы
#include <conio.h> #include <stdio.h> struct list { int el; list *next; }; struct queue { list *beg, *end; }; void putToQueue(queue *q, int iEl) //добавить в очередь { list *tmp; tmp = new list; tmp->next = NULL; tmp->el = iEl; if(q->end != NULL) q->end->next = tmp; else q->beg = tmp; q->end = tmp; } int takeFromQueue(queue *q, int *iEl) // взять из очереди { if(q->beg == NULL) return 0; list *tmp; tmp = q->beg; *iEl = tmp->el; q->beg = tmp->next; delete tmp; if(q->beg == NULL) q->end = NULL; return 1; } queue *CreateQueue() //создать очередь { queue *q; q = new queue; q->beg = NULL; q->end = NULL; return q; } int isQueueEmpty(queue *q) //проверка очереди на пустоту { if(q->beg == NULL) return 1; return 0; } int ClearQueue(queue *q) //очистка очереди { if(q->beg == NULL) return 0; list *tmp, *t; tmp = q->beg; while(tmp->next != NULL) { t = tmp; tmp = t->next; delete t; } q->beg = NULL; q->end = NULL; return 1; } void PrintQueue(queue *q) //вывестии очередь на экран { printf("\n"); queue *tmp = CreateQueue(); int iEl; while(!isQueueEmpty(q)) { takeFromQueue(q, &iEl); printf("%d ", iEl); putToQueue(tmp, iEl); } while(!isQueueEmpty(tmp)) { takeFromQueue(tmp, &iEl); putToQueue(q, iEl); } } void main() { int i; queue *q = CreateQueue(); printf(".......Put Elems.............."); for(i=30; i<40; i++) { putToQueue(q, i); PrintQueue(q); } printf("\n......Take Elems..............."); while(!isQueueEmpty(q)) { takeFromQueue(q, &i); PrintQueue(q); } printf("\n........Put Elems............."); for(i=30; i<35; i++) { putToQueue(q, i); PrintQueue(q); } printf("\n........Clear queue............."); ClearQueue(q); PrintQueue(q); _getch(); }
Объяснение кода листинга программы
- Структура списка:
- struct list
- int el;
- list *next;
- используется для представления элемента в очереди
- struct list
- Структура очереди:
- struct queue
- list *beg;
- list *end;
- используется для хранения элементов очереди
- struct queue
- Функция putToQueue:
- добавляет новый элемент в конец очереди
- создает новый экземпляр списка
- инициализирует его значением и ссылку на следующий элемент (если это не первый элемент)
- добавляет новый экземпляр списка в конец очереди
- Функция takeFromQueue:
- удаляет и возвращает первый элемент из очереди
- если очередь пуста, возвращает 0
- сохраняет значение удаленного элемента в переменной iEl
- удаляет ссылку на удаленный элемент в очереди
- Функция CreateQueue:
- создает новый экземпляр структуры queue
- инициализирует его булевым значением, указывающим на пустоту очереди
- Функция isQueueEmpty:
- проверяет, пуста ли очередь
- возвращает 1, если очередь пуста, и 0 в противном случае
- Функция ClearQueue:
- очищает очередь
- проходит по всем элементам очереди, начиная с первого
- удаляет каждый элемент и сохраняет его значение в переменной iEl
- удаляет все элементы из очереди
- Функция PrintQueue:
- выводит все элементы очереди на экран
- создает новый экземпляр структуры queue для временного хранения элементов
- проходит по всем элементам очереди
- удаляет каждый элемент и добавляет его в временную очередь
- выводит значение каждого элемента на экран
- добавляет каждый элемент обратно в очередь
- Функция main:
- содержит основной код программы
- создает новый экземпляр структуры queue
- добавляет элементы в очередь и выводит ее на экран
- удаляет элементы из очереди и выводит ее на экран
- добавляет элементы в очередь и выводит ее на экран
- очищает очередь и выводит ее на экран
- завершает программу
- Код программы написан на языке C
- использует библиотеки
и - объявлены функции: putToQueue, takeFromQueue, CreateQueue, isQueueEmpty, ClearQueue, PrintQueue, main
- использует библиотеки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д