C++实现线性表 - 06 队列(链表实现)

本文介绍了如何使用链表实现双端队列,包括左插入、右插入、左删除和右删除操作。代码示例展示了C++如何初始化、插入和删除节点,并提供了完整的源代码供读者参考。

数据结构与算法专栏 —— C++实现

写在前面:
上一讲,我们用的是数组来实现队列的功能,这一讲我们尝试用链表来实现,其实我认为链表实现比数组实现更容易理解一些。

队列的插入

书接前文,由于上一讲我们已经对队列的定义进行深入的讲解了,我们直接进入代码部分,同样我们也直接实现双端队列的功能。
在这里插入图片描述
用链表进行操作其实就用到了之前我们讲的双向链表操作啦,对应到双端队列里就是左插入和右插入,左删除和右删除。为了方便,这里创建了头结点和尾结点,通过头结点和尾结点可以快速进行操作。具体操作和双向链表几乎一样,没有了解过的小伙伴可以看我之前讲的双向链表那一节。
线性表 - 03 双向循环链表

//左插入
void left_insert(int key) {
   
   
	if (Size == maxSize) {
   
   
		cout << "该队列已满" << endl;
	}
	else {
   
   
		Node* new_node = new Node;
		new_node->val = key;			
		new_node->right = head->right;		
		new_node->left = head;
		head->right = new_node;
		new_node->right->left = new_node;
		Size++;
	}
}

//右插入
void right_insert(int key) {
   
   
	if (Size == maxSize) {
   
   
		cout << "该队列已满" << endl;
	}
	else {
   
   
		Node* new_node = new Node;
		new_node->val = key;
		new_node->right = last;
		new_node->left = last->left;
		last->left = new_node;
		new_node->left->right = new_node;
		Size++;
	}
}

队列的删除

删除操作也分为左删除和右删除,删除操作同样用到的是双向链表的功能。

//右删除
void right_delete() {
   
   
	if <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值