circular_queue.cpp
#include "cir_queue.h"
#include <iostream>
using namespace std;
bool cir_queue::IsEmpty() {
return front == rear ;
}
bool cir_queue::IsFull() {
return (rear+1)%size == front%size;
}
void cir_queue::enqueue(int item) {
if (IsFull()) {
cout << "Since Queue is Full, you can't enqueue" << endl;
return;
}
else {
que[(++rear)%size] = item;
}
}
int cir_queue::dequeue() {
if (IsEmpty()) {
cout << "Since Queue is empty, you can't dequeue" << endl;
return -1;
}
else {
return que[(++front) % size];
}
}
void cir_queue::printQueue() {
if (IsEmpty()) {
cout << "Queue is empty" << endl;
return;
}
else {
int start = (front + 1) % size;
int end = (rear + 1) % size;
while (start != end) {
cout << que[start] << " ";
start++;
start %= size;
}
cout << endl;
}
}
int cir_queue::peek() {
if (IsEmpty()) {
cout << "Queue is empty" << endl;
return -1;
}
else {
return que[(front+1)%size];
}
}
cir_queue.h
#pragma once
class cir_queue
{
private:
int* que;
int front;
int rear;
int size;
public:
cir_queue(int queue_size):front(0),rear(0),size(queue_size) {
que = new int[queue_size];
}
~cir_queue() {
delete[]que;
}
bool IsEmpty();
bool IsFull();
void enqueue(int item);
int dequeue();
void printQueue();
int peek();
};
cir_queue.cpp
#include "cir_queue.h"
#include <iostream>
using namespace std;
bool cir_queue::IsEmpty() {
return front == rear ;
}
bool cir_queue::IsFull() {
return (rear+1)%size == front%size;
}
void cir_queue::enqueue(int item) {
if (IsFull()) {
cout << "Since Queue is Full, you can't enqueue" << endl;
return;
}
else {
que[(++rear)%size] = item;
}
}
int cir_queue::dequeue() {
if (IsEmpty()) {
cout << "Since Queue is empty, you can't dequeue" << endl;
return -1;
}
else {
return que[(++front) % size];
}
}
void cir_queue::printQueue() {
if (IsEmpty()) {
cout << "Queue is empty" << endl;
return;
}
else {
int start = (front + 1) % size;
int end = (rear + 1) % size;
while (start != end) {
cout << que[start] << " ";
start++;
start %= size;
}
cout << endl;
}
}
int cir_queue::peek() {
if (IsEmpty()) {
cout << "Queue is empty" << endl;
return -1;
}
else {
return que[(front+1)%size];
}
}
'C++ > 자료구조' 카테고리의 다른 글
[C++]AVL Tree (0) | 2023.12.07 |
---|---|
[C++]Reverse doubly linked list with sentinel nodes (1) | 2023.11.29 |
[C++]Doubly linked list with sentinel nodes (3) | 2023.11.29 |
[c++] 스택 활용한 수식 계산 (0) | 2023.11.16 |
[c++]스택 (0) | 2023.11.13 |