这个得实现并不难,难就难在要懂得两个点
第一个点:
循环队列我采用得判断方式是预留一位用作判断是否队满。
第二个点就是判断得数学表达式:
我们设置front rear两个整形来表示入队和出队得位置,那么存在以下关系:
//判断是否是满队列
(rear+1)%maxsize==front
//寻找队列长度Length
我们知道普通队列长度即为(rear-front)
循环队列得长度是(rear-front+maxsize)%maxsize
代码段//hpp
#pragma once
#include<iostream>
#include<string>
#define MAXSIZE
using namespace std;
//队列
template<class T>
class SqQueue
{
private:
int front, rear;
int maxsize;
T* elem;
public:
SqQueue(int size=MAXSIZE);
SqQueue(SqQueue<T>& a);
~SqQueue();
int Length();
bool Empty();
void Clear();
bool InQueue(T e);//入队
bool OutQueue(T &e);//出队
bool GetHead(T& e);//返回队头元素
};
//cpp
#include"队列.hpp"
#include<iostream>
#include<string>
using