数据结构-循环队列练习

在循环队列中,以front和length分别表示循环队列中的队头位置和队列中所含元素的个数。试完成循环队列判断队空、判断队满入队和出队函数的实现。

头文件

/*SeqQueue.h*/
#pragma once
#include<iostream>
using namespace std;
const int DEFAULT_SIZE = 100;
template<class DataType>
class SeqQueue {
protected:
	DataType* elems;	//指向动态内存分配的数组
	int maxSize;		//队列的容量 
	int front, rear;		//队头与队尾指针
	int length;           //队列中所含元素的个数
public:
	SeqQueue(int size = DEFAULT_SIZE);//构造函数
	virtual ~SeqQueue();			//析构函数
	bool IsEmpty() const;			//判断队列是否为空
	bool IsFull() const;           //判断队满
	int EnQueue(const DataType e);   //入队
	int DelQueue(DataType& e);	//出队
};

函数实现

/*SeqQueue.cpp*/
#include"SeqQueue.h"

template<class DataType>
SeqQueue<DataType>::SeqQueue(int size) {
	maxSize = size;
	if (elems != NULL)
		delete[]elems;
	elems = new DataType[maxSize];	
	front = rear = 0;
}
template <class DataType>
SeqQueue<DataType>::~SeqQueue()
{
	delete[]elems;
}

template<class DataType>
bool SeqQueue<DataType>::IsEmpty() const
{
	return length == 0;
}

template<class DataType>
bool SeqQueue<DataType>::IsFull() const
{
	return length == maxSize;
}

template<class DataType>
int SeqQueue<DataType>::EnQueue(const DataType e)
{
	if (IsFull())
		return 0;
	else {
		elems[(front + length) % maxSize] = e;
		length++;
		return 1;
	}
}

template<class DataType>
int SeqQueue<DataType>::DelQueue(DataType& e)
{
	if (!IsEmpty())
	{
		e = elems[front];
		front = (front + 1) % maxSize;
		length--;
		return 1;
	}
	else
		return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值