环境配置
codeblocks
windows10
项目结构
代码
SqQueueClass.h
#ifndef _SQQUEUECLASS_H_
#define _SQQUEUECLASS_H_
#include <iostream>
template <typename T>
class SqQueueClass
{
public:
static const int MAXSIZE;
SqQueueClass(void);
~SqQueueClass(void);
bool QueueEmpty(void) const;
bool QueueFull(void) const;
int QueueLength(void) const;
bool EnQueue(const T &e);
bool DeQueue(T &e);
protected:
private:
T *data;
int front;
int rear;
};
template <typename T>
const int SqQueueClass<T>::MAXSIZE = 100;
template <typename T>
SqQueueClass<T>::SqQueueClass(void)
{
data = new T[MAXSIZE];
front = 0; // front指向队首元素
rear = 0; // rear指向下一插入位置
}
template <typename T>
SqQueueClass<T>::~SqQueueClass(void)
{
delete []data;
}
template <typename T>
bool SqQueueClass<T>::QueueEmpty(void) const
{
return (rear == front);
}
template <typename T>
bool SqQueueClass<T>::QueueFull(void) const
{
return (MAXSIZE == rear);
}
template <typename T>
int SqQueueClass<T>::QueueLength(void) const
{
return (rear - front);
}
template <typename T>
bool SqQueueClass<T>::EnQueue(const T &e)
{
if (QueueFull())
{
return false;
}
data[rear++] = e;
return true;
}
template <typename T>
bool SqQueueClass<T>::DeQueue(T &e)
{
if (QueueEmpty())
{
return false;
}
e = data[front++];
return true;
}
#endif // _SQQUEUECLASS_H_
main.cpp
#include <iostream>
#include "SqQueueClass.h"
using namespace std;
int main(void)
{
SqQueueClass<int> Q1;
const int n = 10;
int a[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int e;
for (int i = 0; i < n; ++i)
{
Q1.EnQueue(a[i]);
}
cout << "Q1.length = " << Q1.QueueLength() << endl;
cout << "Q1: " << endl;
while (!Q1.QueueEmpty())
{
Q1.DeQueue(e);
cout << e << " ";
}
cout << endl;
system("PAUSE");
return 0;
}