队列的顺序存储结构 循环队列(Circle Queue) C++

简介: 队列的顺序存储结构 循环队列(Circle Queue) C++

CirQueue.h

#ifndef __CIRQUEUE_H__
#define __CIRQUEUE_H__
const int queueSize = 100;
template <class T>
class CirQueue
{
public:
  CirQueue();
  ~CirQueue();
  void EnQueue(T _data);
  T DeQueue();
  T getQueue();
  bool isEmpty();
  bool isFilled();
private:
  int front, rear;
  T data[queueSize];
};
#endif


CirQueue.cpp

#include "CirQueue.h"
#include <iostream>
using namespace std;
template <class T>
CirQueue<T>::CirQueue()
{
  rear = front = 0;
}
template <class T>
CirQueue<T>::~CirQueue()
{}
template <class T>
void CirQueue<T>::EnQueue(T _data)
{
  if (!isFilled())
  {
  rear = (rear + 1) % queueSize;
  data[rear] = _data;
  }
}
template <class T>
T CirQueue<T>::DeQueue()
{
  if (!isEmpty())
  {
  front = (front + 1) % queueSize;
  T tempData = data[front];
  data[front] = 0;
  return tempData;
  }
  else
  {
  cout << "Queue is empty";
  return false;
  }
}
template <class T>
T CirQueue<T>::getQueue()
{
  int tempPos = (front + 1) % queueSize;
  return data[tempPos];
}
template <class T>
bool CirQueue<T>::isEmpty()
{
  if (front == rear)
  return true;
  return false;
}
template <class T>
bool CirQueue<T>::isFilled()
{
  int tempRear = (rear + 1) % queueSize;
  if (front == tempRear)
  return true;
  return false;
}


queue.cpp

#include <iostream>
#include "CirQueue.h"
#include "CirQueue.cpp"
using namespace std;
int main()
{
  CirQueue<char> cirq;
  cirq.EnQueue('A');
  cirq.EnQueue('B');
  cirq.EnQueue('C');
  cirq.EnQueue('D');
  cout << cirq.getQueue() << endl;
  cout << cirq.DeQueue() << endl;
  cout << cirq.DeQueue() << endl;
  cout << cirq.DeQueue() << endl;
  cout << cirq.DeQueue() << endl;
  cout << cirq.DeQueue() << endl;
  return 0;
}


相关文章
|
16天前
|
缓存 安全 C++
C++无锁队列:解锁多线程编程新境界
【10月更文挑战第27天】
30 7
|
16天前
|
消息中间件 存储 安全
|
1月前
|
存储 算法 调度
【C++打怪之路Lv11】-- stack、queue和优先级队列
【C++打怪之路Lv11】-- stack、queue和优先级队列
32 1
|
1月前
|
设计模式 存储 C++
C++之stack 和 queue(下)
C++之stack 和 queue(下)
33 1
|
1月前
|
存储 算法 C语言
【C++】C++ STL探索:Priority Queue与仿函数的深入解析(一)
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
|
2月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
45 2
|
1月前
|
C++ 容器
C++之stack 和 queue(上)
C++之stack 和 queue(上)
55 0
|
1月前
|
存储 C++ 容器
C++番外篇——stack、queue的实现及deque的介绍
C++番外篇——stack、queue的实现及deque的介绍
25 0
|
1月前
|
存储 算法 C++
C++入门10——stack与queue的使用
C++入门10——stack与queue的使用
40 0
|
1月前
|
C++
【C++】C++ STL探索:Priority Queue与仿函数的深入解析(三)
【C++】C++ STL探索:Priority Queue与仿函数的深入解析