队列的顺序存储结构 循环队列(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;
}


相关文章
|
28天前
|
设计模式 存储 C++
C++:Stack和Queue的模拟实现
C++:Stack和Queue的模拟实现
|
1月前
|
存储 算法 C++
C++初阶--queue和stack
C++初阶--queue和stack
C4.
|
1月前
|
算法 程序员 C++
C++标准头文件结构
C++标准头文件结构
C4.
24 0
|
25天前
|
C++ 容器
【C++练级之路】【Lv.9】【STL】stack类和queue类的模拟实现
【C++练级之路】【Lv.9】【STL】stack类和queue类的模拟实现
|
26天前
|
存储 算法 C语言
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
36 0
|
27天前
|
存储 算法 C++
【C++ map结构 】std::map 和 std::unordered_map 在使用上的差异
【C++ map结构 】std::map 和 std::unordered_map 在使用上的差异
20 0
|
1月前
|
存储 算法 C++
【C++ 包装器类 map】C++ 标准库(std)中的map结构 哈希表(unordered_map)和黑红树(map)教程
【C++ 包装器类 map】C++ 标准库(std)中的map结构 哈希表(unordered_map)和黑红树(map)教程
80 1
|
1月前
|
C++
C++控制结构
C++控制结构
|
1月前
|
存储 安全 Linux
C++文件格式深度解析:从底层结构到关键特性
C++文件格式深度解析:从底层结构到关键特性
247 3
C++文件格式深度解析:从底层结构到关键特性
|
1月前
|
安全 算法 调度
C++队列探秘:队列容器的使用技巧与实战案例解析
C++队列探秘:队列容器的使用技巧与实战案例解析
126 0