队列:C++实现

引言:

        在C++中实现队列是一种常见的数据结构操作。队列是一种先进先出(FIFO)的数据结构,类似于排队买票或者排队等待服务的场景。在本文中,我们将使用C++语言来实现一个简单的队列数据结构。

技术实现:

        首先,我们定义了一个常量QueueSize,用于表示队列的最大容量。然后,我们使用模板类Queue来定义队列的操作。模板类允许我们在实例化队列时指定元素的类型。

在Queue类中,我们定义了以下成员函数:

  • 构造函数Queue()用于初始化队列。
  • 析构函数~Queue()用于释放队列的资源。
  • enQueue(Element x)用于将元素x入队。
  • deQueue()用于将队首元素出队。
  • getQueue()用于获取队首元素。
  • empty()用于判断队列是否为空。

此外,我们还定义了一个私有成员变量data来存储队列元素,以及front和rear来表示队首和队尾的位置。

#include<iostream>
#include<assert.h>
const int QueueSize = 10;

template<typename Element>
class Queue
{
public:
	Queue();
	~Queue();
	void enQueue(Element x);
	Element deQueue();
	Element getQueue();
	bool empty();
private:
	Element data[QueueSize];
	int front, rear;
};

        接下来,我们将逐步实现这些成员函数。在构造函数中,我们将front和rear初始化为0,表示队列为空。在析构函数中,我们不需要做太多工作,因为C++会自动释放数组的内存。

        在enQueue函数中,我们首先判断队列是否已满,如果满了则抛出异常。然后将元素x放入rear位置,并将rear后移一位。在deQueue函数中,我们首先判断队列是否为空,如果为空则抛出异常。然后将front后移一位,并返回队首元素。在getQueue函数中,我们直接返回队首元素。在empty函数中,我们判断队列是否为空并返回相应的结果。

template<typename Element>
Queue<Element>::Queue()
{
	front = rear = -1;
}

template<typename Element>
Queue<Element>::~Queue(){}

template<typename Element>
void Queue<Element>::enQueue(Element x)
{
	assert((rear + 1) % QueueSize != front);
	rear = (rear + 1) % QueueSize;
	data[rear] = x;
}

template<typename Element>
Element Queue<Element>::deQueue()
{
	assert(rear != front);
	front = (front + 1) % QueueSize;
	return data[front];
}

template<typename Element>
Element Queue<Element>::getQueue()
{
	assert(rear != front);
	return data[front];
}

template<typename Element>
bool Queue<Element>::empty()
{
	return rear==front;
}

最后,我们可以使用这个Queue类来进行队列操作。例如:

Queue<int> q;
q.enQueue(1);
q.enQueue(2);
std::cout << q.getQueue() << std::endl; // 输出1
q.deQueue();
std::cout << q.getQueue() << std::endl; // 输出2

结尾: 

         通过这样的实现,我们可以方便地使用C++来操作队列,实现先进先出的数据结构。这种实现方式可以应用于各种场景,如操作系统调度、网络数据传输等。希望本文对你理解队列的实现有所帮助。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值