使用不带头结点的循环链表实现队列(数据结构)

本文介绍如何使用不带头结点的循环链表实现高效队列。在尾部push数据时,只需在myback和myback->next之间插入结点,myback指向新结点。头部数据的取出和删除操作对myback->next进行,复杂度为O(1)。已附带代码实现和实验结果。
摘要由CSDN通过智能技术生成
我使用类模版来完成循环链表实现队列的操作。首先定义一个结点类node用来保存结点信息,然后定义队列类Queue,接下来我们思考:要完成队列的4个基本操作即
1.判断队列是否为空
2.在队列尾部push进数据
3.从队列头部取出数据
4.删除掉队列首部的元素
我们这个Queue类需要什么成员变量?
答案是: (维护)队列尾部结点、队列大小就够了。

我们来分析,尾部push数据的时候,我们只需要在myback和myback->next之间插入这个结点,然后把这个myback指向这个结点即可。取出和删除头部数据只需要对myback->next进行操作即可,复杂度是O(1),效率很高。


剩下的一些实现细节看我下面的代码实现:

//circle_list.h
#ifndef CIRCLE_LIST
#define CIRCLE_LIST
#include<iostream>
#include<string>
#include<cstring>
template <typename T>
class node//节点类
{
public:
	T data;
	node *next;
	node(T da = 0, node *n = NULL) :da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值