Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 20.02.2020.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <queue>
- #include <string>
- using namespace std;
- typedef int QueueItemType;
- class Queue
- {
- public:
- Queue(); //конструктор по умолчанию
- Queue(const Queue &Q); //конструктор копирования
- ~Queue(); //деструктор
- bool isEmpty() const; //проверка очереди на пустоту
- void enqueue(QueueItemType newItem); //добавление элемента в очередь
- void dequeue(); //удаление элемента из очереди
- void dequeue(QueueItemType &queueFront);
- void getFront(QueueItemType &queueFront) const; //извлечение головы списка
- void show(); //вывод очереди
- private:
- struct QueueNode
- {
- QueueItemType item;
- QueueNode *next;
- };
- QueueNode *frontPtr;
- QueueNode *backPtr;
- };
- Queue::Queue() : backPtr(NULL), frontPtr(NULL)
- {
- }
- Queue::Queue(const Queue &Q)
- {
- QueueNode *temp = Q.frontPtr;
- while (temp)
- {
- enqueue(temp->item);
- temp = temp->next;
- }
- }
- Queue::~Queue()
- {
- while (!isEmpty())
- dequeue();
- }
- bool Queue::isEmpty() const
- {
- return bool(backPtr == NULL);
- }
- void Queue::enqueue(QueueItemType newItem)
- {
- QueueNode *newPtr = new QueueNode;
- if (newPtr == NULL) cout << "Error: enqueue - enough memory"; //проверка выделениия памяти
- else {
- newPtr->item = newItem; //запись данных в новый узел
- newPtr->next = 0;
- if (isEmpty()) frontPtr = newPtr; //вставка элемента в пустую очередь
- else
- backPtr->next = newPtr; //вставка элемента не в пустую очередь
- backPtr = newPtr; //новый элемент стоит в конце очереди
- }
- }
- void Queue::dequeue()
- {
- if (isEmpty()) cout << "dequeue - The queue is empty";
- else
- {
- QueueNode *tempPtr = frontPtr;
- if (frontPtr == backPtr)
- {
- frontPtr = NULL;
- backPtr = NULL;
- }
- else frontPtr = frontPtr->next;
- tempPtr->next = NULL;
- delete tempPtr;
- }
- }
- void Queue::dequeue(QueueItemType& queueFront)
- {
- if(isEmpty()) cout << "dequeue - The queue is empty";
- else
- {
- queueFront = frontPtr->item;
- dequeue();
- }
- }
- void Queue::getFront(QueueItemType& queueFront) const
- {
- if (isEmpty()) cout << "getFront - The queue is empty";
- else queueFront = frontPtr->item;
- }
- void Queue::show()
- {
- QueueNode* current = frontPtr;
- while (current != NULL) {
- cout << current->item << " ";
- current = current->next;
- }
- cout << endl;
- }
- int main()
- {
- Queue cain;
- //int a;
- cain.enqueue(54);
- cain.enqueue(5);
- cain.enqueue(7);
- cain.enqueue(9);
- cain.enqueue(24);
- cain.enqueue(53);
- /*while (!cain.isEmpty())
- {
- cain.getFront(a);
- cout << a;
- cain.dequeue();
- }*/
- //cain.dequeue();
- cout << "Queue: ";
- cain.show();
- if (cain.isEmpty()) cout << "Queue is empty\n";
- else cout << "Queue is not empty\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment