数据结构 队列的结构特点及基本操作

队列的结构特点及操作

队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表。表中允许插入的一端称为队尾,允许删除的一端称为队头。总结下来就是只能在队尾插入,在队头删除。也就是在队尾进去之后从队头出去。在队尾进行插入的操作称之为入队列,在队头进行删除的操作叫做出队列。队列也有两种存储方式,分别为链队列循环队列

链队列

用链表表示的队列简称为链队列。一个链队列需要两个分别指向队头和队尾的指针(分别叫头指针和尾指针)。为了操作方便,为链队列添加一个头结点,并约定头指针始终指向这个头结点,尾指针指向真正的队尾元素结点。一个空的链队列只含有一个头结点并且队列的头指针和尾指针都指向这个头结点。在出队列(即删除队头数据元素时),如果此时只有一个数据结点,则直接删除会丢失尾指针。所以要提前将尾指针指向头指针。

#include<iostream>
#include<string>
using namespace std;

//定义链队列的结点
typedef struct LNode {
	char data;
	struct LNode *next;
}LNode;

//定义链队列
typedef struct
{
	LNode *front;   //定义头指针
	LNode *rear;    //定义尾指针
}LinkQueue;

//构建链队列 链队列的初始化
void Init_LinkQueue(LinkQueue &Q)
{
	Q.front = Q.rear = new LNode;   //为头指针和尾指针分配同一个新结点
	Q.rear->next = NULL;            //尾结点的next指针为空
}

//销毁链队列
void Destroy_LinkQueue(LinkQueue &Q)
{
	while (Q.front)
	{
		Q.rear = Q.front;   //此时尾指针不再指向队尾 而是单纯作为一个辅助指针
		Q.front = Q.front
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值