?? 9_10.h
字號:
///9_10.h
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
const int MaxQSize = 50; //隊列元素最大個數
//類的聲明
template <class T>
class Queue
{
private:
int front, rear, count; //隊頭指針、隊尾指針、元素個數
T qlist[MaxQSize]; //隊列元素數組
public:
Queue (void); //構造函數,初始化隊頭指針、隊尾指針、元素個數
void QInsert(const T& item); //新元素入隊
T QDelete(void); //元素出隊
void ClearQueue(void); //清空隊列
T QFront(void) const; //訪問隊首元素
// 測試隊列狀態
int QLength(void) const; //求隊列長度(元素個數)
int QEmpty(void) const; //判隊隊列空否
int QFull(void) const; //判斷隊列滿否
};
// 構造函數,初始化隊頭指針、隊尾指針、元素個數
template <class T>
Queue<T>::Queue (void) : front(0), rear(0), count(0)
{}
template <class T>
void Queue<T>::QInsert (const T& item) //向隊尾插入元素(入隊)
{
if (count == MaxQSize) // 如果隊滿,中止程序
{
std::cerr << "Queue overflow!" << endl;
exit(1);
}
count++; //元素個數增1
qlist[rear] = item; //向隊尾插入元素
rear = (rear+1) % MaxQSize; //隊尾指針增1,用取余運算實現循環隊列
}
template <class T>
T Queue<T>::QDelete(void) //刪除隊首元素,并返回該元素的值(出隊)
{
T temp;
if (count == 0) // 如果隊空,中止程序
{
std::cerr << "Deleting from an empty queue!" << endl;
exit(1);
}
temp = qlist[front]; // 記錄隊首元素值
count--; // 元素個數自減
front = (front+1) % MaxQSize; //隊首指針增1。取余以實現循環隊列
return temp; //返回首元素值
}
template <class T>
T Queue<T>::QFront(void) const // 訪問隊列首元素(返回其值)
{ return qlist[front]; }
template <class T>
int Queue<T>::QLength(void) const // 返回隊列元素個數
{ return count; }
template <class T>
int Queue<T>::QEmpty(void) const // 測試隊空否
{ return count == 0; } //返回邏輯值 count == 0
template <class T>
int Queue<T>::QFull(void) const // 測試隊滿否
{ return count == MaxQSize; } // 返回邏輯值 count == MaxQSize
template <class T>
void Queue<T>::ClearQueue(void) // 清空隊列
{
count = 0;
front = 0;
rear = 0;
}
#endif // QUEUE_CLASS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -