Реализовать все возможные операции для очереди - 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
- использует библиотеки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д