c++队列

本文详细介绍了队列的链式存储结构,即通过链表实现队列,并添加了队头和队尾指针,限制操作仅在队尾添加和队头删除。提供了创建队列、队尾添加元素、队头删除元素的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

队列

队列的链式存储结构其实就是简单的链表,只是添加了队头和队尾指针。限制了添加和删除只能从队尾和队头操作。

代码实现

#include <iostream>
using namespace std;

// 结点
typedef struct QNode
{
	int data;
	struct QNode *next;
}QNode, *QueuePtr;


// 链表结构
typedef struct
{
	QueuePtr front, rear;	// 队头,队尾指针
}LinkQueue;


// 创建队列
void CreateQueue(LinkQueue *Q, int n)
{
	QueuePtr q = new QNode();	// 创建头结点 
	Q->front = Q->rear = q;		// 并令队头队尾指针指向头结点

	QueuePtr p;

	for (int i = 0; i < n; i++)
	{
		p = new QNode();
		p->data = i;
		p->next = NULL;

		Q->rear->next = p;
		Q->rear = p;

		// EnQueue(&p, i);
	}

}


// 队尾添加元素
void EnQueue(LinkQueue *Q, int data)
{
	QueuePtr s = new QNode();
	s->data = data;
	s->next = NULL;

	Q->rear->next = s;	//将新节点入队
	Q->rear = s;	//队尾指向新结点
}


// 队头删除元素
void DeQueue(LinkQueue *Q, int *data)
{
	QueuePtr p;
	if (Q->front == Q->rear)
	{
		cout << "Queue is empty" << endl;
	}

	p = Q->front->next;		// 获取删除节点
	Q->front->next = p->next;	// 连接新队列
	*data = p->data;

	if (Q->rear == p)		// 如果队头是队尾,则将rear指向头结点
	{
		Q->rear = Q->front;
	}

	delete(p);
}


void PrintQueue(LinkQueue *Q)
{
	QueuePtr p;
	p = Q->front->next;

	if (!p) cout << "Queue is empty" << endl;

	while (p)
	{
		cout << p->data<<endl;
		p = p->next;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值