我是靠谱客的博主 踏实发带,最近开发中收集的这篇文章主要介绍队列的顺序存储结构 循环队列(Circle Queue) C++,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

CirQueue.h

#ifndef __CIRQUEUE_H__
#define __CIRQUEUE_H__

const int queueSize = 100;

template <class T>
class CirQueue
{
public:
	CirQueue();
	~CirQueue();
	void EnQueue(T _data);
	T DeQueue();
	T getQueue();
	bool isEmpty();
	bool isFilled();
private:
	int front, rear;
	T data[queueSize];
};

#endif

CirQueue.cpp

#include "CirQueue.h"
#include <iostream>
using namespace std;

template <class T>
CirQueue<T>::CirQueue()
{
	rear = front = 0;
}

template <class T>
CirQueue<T>::~CirQueue()
{}

template <class T>
void CirQueue<T>::EnQueue(T _data)
{
	if (!isFilled())
	{
		rear = (rear + 1) % queueSize;
		data[rear] = _data;
	}
}

template <class T>
T CirQueue<T>::DeQueue()
{
	if (!isEmpty())
	{
		front = (front + 1) % queueSize;
		T tempData = data[front];
		data[front] = 0;
		return tempData;
	}
	else
	{
		cout << "Queue is empty";
		return false;
	}
}

template <class T>
T CirQueue<T>::getQueue()
{
	int tempPos = (front + 1) % queueSize;
	return data[tempPos];
}

template <class T>
bool CirQueue<T>::isEmpty()
{
	if (front == rear)
		return true;
	return false;
}

template <class T>
bool CirQueue<T>::isFilled()
{
	int tempRear = (rear + 1) % queueSize;
	if (front == tempRear)
		return true;
	return false;
}

queue.cpp

#include <iostream>
#include "CirQueue.h"
#include "CirQueue.cpp"
using namespace std;

int main()
{
	CirQueue<char> cirq;

	cirq.EnQueue('A');
	cirq.EnQueue('B');
	cirq.EnQueue('C');
	cirq.EnQueue('D');

	cout << cirq.getQueue() << endl;

	cout << cirq.DeQueue() << endl;
	cout << cirq.DeQueue() << endl;
	cout << cirq.DeQueue() << endl;
	cout << cirq.DeQueue() << endl;
	cout << cirq.DeQueue() << endl;

	return 0;
}

最后

以上就是踏实发带为你收集整理的队列的顺序存储结构 循环队列(Circle Queue) C++的全部内容,希望文章能够帮你解决队列的顺序存储结构 循环队列(Circle Queue) C++所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部