数据结构---循环链表

news2024/11/20 10:23:00

数据结构—循环链表

循环单链表

typedef struct LNode
{
    ElemType data;
    struct LNode* next;
}LNode, *LinkList;

循环单链表初始化

bool InitList(LinkList &L)
{
    L = (LNode*)malloc(sizeof(LNode));
    if (L == NULL)  return false;
    L->next = L;	//头结点next指向头结点
    return true;
}

判断循环单链表是否为空

bool Empty(LinkList L)
{
    return L->next == L;
}

判断结点p是否为循环单链表的表尾结点

bool IsTail(LinkList L, LNode* p)
{
    return p->next == L;
}

很多时候对链表的操作都是在头部或尾部
这时候就可以显现出循环链表的方便性

从头结点找到尾部,时间复杂度为O(n)
从尾部找到头部,时间复杂度为O(1)

循环双链表

typedef struct DNode
{
    ElemType data;
    struct DNode *next, *prior;
}DNode, *DLinkList;

循环双链表的初始化

bool InitDLinkList(DLinkList &L)
{
    L = (DNode*)malloc(sizeof(DNode));
    if (L == NULL)  return false;
    L->next = L; ///头结点的next指向头结点
    L->prior = L; //头结点的prior指向头结点
    return true;
}

判断循环双链表是否为空

bool Empty(DLinkList L)
{
    return L->next == L;
}

判断结点p是否为循环双链表的尾结点

bool IsTail(DLinkList L, DNode* p)
{
    return p->next == L;
}

在p结点之后插入s结点

bool InsertNextDNode(DNode* p, DNode* s)
{
    s->next = p->next;
    s->prior = p;
    p->next->prior = s;
    p->next = s;
}

删除p的后继结点q

p->next = q->next;
q->next->prior = p;
free(q);

知识点回顾与重要考点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman:mock server简单使用,自定义获取response body

一.mock server的作用 创建一个虚假的服务器接口,只要访问就可以返回设定好的response. 可用于接口调试和接口自动化测试。 二.操作步骤 首先创建一个mock server 指定response body 创建成功后Collections那里会自动多一个跟mock server 对应的接口 接下来…

前端Vue自定义银行卡号格式化组件 中间卡号文本转星号

前端Vue自定义银行卡号格式化组件 中间卡号文本转星号, 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13230 效果图如下: # cc-format-card #### 使用方法 使用方法 <!-- cardNo:银行卡号 isStar: 是否转星号 --> <cc…

基于Debian 12 “Bookworm “的SparkyLinux 7.0 “Orion Belt” 正式发布

导读SparkyLinux 开发人员今天宣布&#xff0c;SparkyLinux 7.0 “Orion Belt “已经发布并全面上市&#xff0c;这是这个基于Debian的GNU/Linux发行版的最新稳定更新。 基于最近发布的Debian 12 “Bookworm “操作系统系列&#xff0c;并与2023年7月15日的资料库同步&#xff…

bug汇集-三

1、 2、async...await 同步执行 方法一&#xff08;推荐&#xff09;&#xff1a;使用 async...await 同步执行 方法二: 不用async...await&#xff0c;就是异步处理&#xff0c;需要每一步 都加提示

如何不注册Oracle登录账号而下载Oracle11g客户端

注册非常烦人。简单的事情本来一个安装包就搞定的事情&#xff0c;结果搞得比上天还复杂。 进入这个界面&#xff1a; Instant Client for Windows 32-bithttps://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html打开界面后。用浏…

【安全】使用docker安装Nessus

目录 一、准备docker环境服务器&#xff08;略&#xff09; 二、安装 2.1 搜索镜像 2.2 拉取镜像 2.3 启动镜像 三、离线更新插件 3.1 获取challenge 3.2 官方注册获取激活码 3.3 使用challenge码和激活码获取插件下载地址 3.4 下载的插件以及许可协议复制到容器内 四…

数字逻辑与模拟电子技术-部分知识点(3)——数电部分-基本逻辑运算、复合逻辑运算

目录 基本逻辑运算 与逻辑运算 或逻辑运算 非逻辑运算 复合逻辑运算 与非逻辑 或非逻辑 与或非逻辑 异或逻辑 同或逻辑 基本逻辑运算 逻辑代数中只有三种基本逻辑运算,即 “与”、“或”、“非”。 与逻辑运算 定义&#xff1a;只有决定一事件的全部条件都具备时&…

怎么学习网络安全相关知识? - 易智编译EaseEditing

学习网络安全相关知识是一个系统性的过程&#xff0c;以下是一些学习网络安全的方法和建议&#xff1a; 学习基础知识&#xff1a; 了解计算机网络、操作系统、网络协议等基础知识。掌握网络的工作原理、常见的网络攻击方式和防御策略。 学习安全技术&#xff1a; 学习各种网…

Spark 3.4.x Server Client模式下的数据传输实现

背景 在Spark中python和jvm的通信杂谈–ArrowConverter中&#xff0c;我们提到Spark 3.4.x中是Client和Server之间的数据传输是采用Arrow IPC的&#xff0c;那具体是怎么实现的呢&#xff1f; 分析 直接上代码ClientE2ETestSuite test("createDataFrame from complex t…

nginxconfig-部属

一、下载源码&#xff08;master&#xff09; GitHub - digitalocean/nginxconfig.io: ⚙️ NGINX config generator on steroids &#x1f489; 二、编译 npm install npm run build 三、将编译后的dist目录下的文件拷贝到nginx托管服务器下的目录&#xff1a;/data/wwwroot…

zabbix微信告警

环境&#xff1a;点击查看 注册一个企业微信&#xff08;官网&#xff09; 进入后台管理 拉一个用户 创建一个应用 下载脚本&#xff08;这步保留个人看法&#xff09; [rootchenshuyi requests-2.18.3]# wget https://github.com/X-Mars/Zabbix-Alert-WeChat.git --2021-0…

原淘宝npm域名即将停止解析,请切换至新域名

https://developer.aliyun.com/mirror/NPM?spma2c6h.13651102.J_4121707010.2.3e221b11kPiuyz 设置查看npm 国内镜像地址 C:\>npm config get registry http://registry.npmmirror.com/C:\>npm config set registry http://registry.npmmirror.com/C:\>npm config …

windows安装python开发工具pycharm

下载地址 PyCharm: the Python IDE for Professional Developers by JetBrains 点击下载 安装 双击exe安装等待安装完成即可 设置python环境 添加本地python环境 选择python.exe 所在路径即可&#xff0c;2.x版本和3.x版本都可&#xff0c;根据需要进行调整

清华大学发布《2023年GPT赋能通信行业应用白皮书》(132页)

加gzh 回复“gpt” 获取《2023年AIGC(GPT-4)赋能通信行业应用白皮书》完整版 摘要&#xff1a;在ChatGPT/GPT-4席卷全球的热潮中&#xff0c;人们已经深刻认识到人工智能作为经济社会发展中一项变革性技术与关键性力量&#xff0c;将为全球产业带来的巨大飞跃和突破式发展&a…

SVN 多项目地址指向方法

前言 我们在实际的开发中往往可能管理着多个项目&#xff0c;多个项目都用SVN管理着&#xff0c;如果遇到SVN地址变更&#xff0c;以前我们需要对每个项目一一进行SVN重新定位&#xff0c;项目少还好&#xff0c;一旦项目很多并且SVN地址经常变的情况下&#xff0c;进行地址映…

【致敬未来的攻城狮计划】活动总结

活动总结 一转眼攻城狮计划就已经到了最后一天了。 5月我还处在一个迷茫期&#xff0c;那时候刚刚入坑嵌入式&#xff0c;只学了几款电子积木&#xff0c;对整个体系也不是很清楚&#xff0c;也不知道应该学些什么。因为刚刚转到硬件领域&#xff0c;也缺少相关经历和能力证明…

本地离线安装SeleniumIDE(Chrome)

一、插件下载 现需要准备一台可以连接外网的电脑&#xff0c;由于受到chrome的限制&#xff0c;我们可以选择搭梯子进行直接安装相应插件&#xff0c;但考虑到部分新手不会翻墙&#xff0c;本次提供一个不需翻墙的方法。 进入https://www.crx4chrome.com/crx/181591/网页内&…

推荐几款可以大幅提高开发效率的vscode插件 | 京东云技术团队

1、Vue 2 Snippets 这是一款基于vue2的代码片段提示插件&#xff0c;对于使用vue2的开发者特别友好&#xff0c;可大幅提高我们的编码速度。 他的能力非常强大&#xff0c;具体还需要我们去看他的文档&#xff0c;解锁更多能力。 2、Path Autocomplete 这是一款路劲提示插件…

ES(elasticsearch)删除指定索引

场景 需要删除指定的索引 语法 执行命令 DELETE /索引名比如&#xff1a;DELETE /mysql-status_-2023.06 执行结果&#xff1a; 判断索引是否删除成功 执行命令 HEAD /索引名比如&#xff1a;HEAD /mysql-status_-2023.06 执行结果&#xff1a; 说明已经删除完毕 总结…

kotlin单例

两种方式都可以 更推荐方式一 方式一 class TraceDataManager private constructor() {companion object {private val TAG TraceDataManager::class.java.simpleNameVolatileprivate var instance: TraceDataManager? nullfun getInstance(): TraceDataManager {return i…