数据结构实验课五-1

利用顺序存储结构实现一个循环队列,完成结构体的定义,以及入队函数,出队函数和主程序的编写。其中入队函数将键盘输入的整数存入队列的末尾;出队函数将队列最前面的元素打印到屏幕;入队和出队的人数可以由键盘指定。

#include<iostream>
using namespace std;

const int QueueSize = 100;
template<typename DataType>
class CirQueue
{
public:
	CirQueue();
	~CirQueue(); 
	void EnQueue();
	DataType DeQueue();
	DataType GetHead();
	int Empty();
private:
	DataType data[QueueSize];
	int front, rear;
};

template<typename DataType>
CirQueue<DataType>::CirQueue()
{
	rear = front = QueueSize -1;
}

template<typename DataType>
CirQueue<DataType>::~CirQueue(){}

template<typename DataType>
CirQueue<DataType>::Empty()
{
	if(rear == front)
	{
		printf("Null"); 
	}
}
template<typename DataType>
void CirQueue<DataType>::EnQueue()
{
	int b; 
	cout<<"请输入要入队的数字:"<<endl; 
	cin>>b;
	if ((rear + 1) % QueueSize == front)throw"上溢";
	rear = (rear + 1) % QueueSize;
	data[rear] = b;
}

template<typename DataType>
DataType CirQueue<DataType>::DeQueue()
{
	if (rear == front)throw"下溢";
	front = (front + 1) % QueueSize;
	cout<<"出队的元素是:"<<endl; 
	cout<<data[front]<<endl;
}

template<typename DataType>
DataType CirQueue<DataType>::GetHead()
{
	if (rear == front)throw"下溢";
	return data[(front + 1) % QueueSize];
}

int main()
{
	int x;
	int c = 0;
	CirQueue<int> Q;
	int a;
	while(1){
	cout<<"请选择功能:"<<endl;
	cout<<"1:入队"<<endl;
	cout<<"2:出队"<<endl;
	cout<<"0:退出"<<endl;
	cin>>x;
	switch (x)
	{
		case 0: return 0;break;
		case 1:Q.EnQueue();c = c+1;break;
		case 2:c = c-1;if(c == -1){cout<<"队列为空!";return 0;}Q.DeQueue();break;
		default:cout<<"输入错误,重新输入!"<<endl; 
	}
	}
	return 0;
}

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页