用循环单链表实现队列

本文介绍如何使用带头结点的单循环链表实现链式队列,重点在于只设置尾指针而不设头指针。讨论了初始化、入队列(采用头插法在尾节点后插入)和出队列(注意队列空时的处理)的操作方法。在循环链表中,特定条件(如(rear->next == rear))对应队列的不同状态。
摘要由CSDN通过智能技术生成

假设以带头结点的单循环链表实现链式队列,并且要求只设尾指针,不设头指针,编写实现这种链式队列初始化、入队列和出队列操作的函数

入队:我们只需要在尾节点后插入元素即可,需要注意的是,不可以使用尾插法,因为是循环链表,rear->next是头指针,所以我们应该在尾节点使用头插法,并让rear指向新队尾。出队:需要注意当出队后,队列为空时,rear指向头结点

在不带头结点的循环链表中,(rear->next == rear) 表示该队列中只有一个元素; 在带头结点的循环链表中,(rear->next == rear)表示该队列为空,即没有元素;

/*-------------一、不带头结点的循环单链表示队列------------------------*/
void InitQu(QNode *&rear){
	rear=NULL;
}

//入队
void EnQu(QNode *&rear,ElemType x){
	QNode *s;
	s=(QNode *)malloc(sizeof(QNode));
	s->data=x;
	if (rear==NULL)  //队列为空
	{
		s->next=s;
		rear=s;
	}
	else{      //队列不为空
		s->next=rear->next;
		rear->next=s;
		rear=s;
	}

}

//出队
int DeQu(QNode *&rear,ElemType &x){
	QNode *q;
	if(rear==NULL)
		return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梖梖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值