第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

线性表的链式表示和实现

结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻
线性表的链式表示又称为非顺序映像或链式映像。
用一组物理位置任意的存储单元来存放线性表的数据元素。
这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。
链表中元素的逻辑次序和物理次序不一定相同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单链表、双链表、循环链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链表(链式存储结构)的特点

1、结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
2、访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点(顺序存取法),所以寻找第一个结点和最后一个结点所花费的时间不等。
在这里插入图片描述
在这里插入图片描述

单链表的定义和表示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单链表的基本操作的实现☆☆☆☆

在这里插入图片描述
用C++实现:

My_List* initList()
{My_List* temp = new My_List;temp->pnext = NULL;return temp;
}

在这里插入图片描述

bool ListEmpty(My_List* temp)
{if (temp->pnext == NULL){return true;}else{return false;}
}

在这里插入图片描述
在这里插入图片描述

void My_DeleteAll(My_List* temp)
{My_List* p;while (temp){p = temp;temp = temp->pnext;delete p;}
}

在这里插入图片描述

void My_ClearAll(My_List* temp)
{My_List* p;My_List* q;p = temp->pnext;while (p){q = p->pnext;delete p;p = q;}temp->pnext = NULL;
}

在这里插入图片描述
在这里插入图片描述

int ListLength(My_List* temp)
{My_List* p;p = temp->pnext;int num = 0;while (p){++num;p = p->pnext;}return num;
}

老师建议:基础且极其重要,必须熟练掌握。
在这里插入图片描述
在这里插入图片描述
较复杂函数的实现:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

bool GetRnum(My_List* temp, int i, My_List* &mycache)
{My_List* p;p = temp->pnext;int j = 1;while (p&&j<i){p = p->pnext;++j;}if (!p || j>i){return false;}mycache = p;return true;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

int LocateR(My_List* temp, int change)
{int j = 1;My_List* p = temp->pnext;while (p&&p->pdata.My_num!=change){p = p->pnext;++j;}if (p!=NULL){return j;}else{return 0;}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bool ListInsertfromI(My_List* temp, int i, My_List* mycache)
{int j = 0;My_List* p = temp;while (p&&j<i-1){p = p->pnext;++j;}if (!p || j>i - 1){return false;}mycache->pnext = p->pnext;p->pnext = mycache;return true;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bool ListDelete(My_List* temp, int i)
{My_List* p = temp;int j = 0;while (p->pnext&&j<i-1){p = p->pnext;++j;}if (!(p->pnext) || j>i - 1){return false;}My_List* q = p->pnext;p->pnext = q->pnext;delete q;return true;
}

时间复杂度分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bool FrontInsert(My_List* temp)
{My_List* insertcache = new My_List;while (true){cout << "请输入您所要添加资源的编号>=" << endl;cin >> insertcache->pdata.My_num;if (cin.fail()) {cout << "您输入的不是一个整数,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}cout << "请输入您所要添加资源的名字>=" << endl;cin >> insertcache->pdata.My_name;if (cin.fail()) {cout << "您输入的不是一个正确的名字,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}cout << "请输入您所要添加资源的剩余量>=" << endl;cin >> insertcache->pdata.My_Resources;if (cin.fail()) {cout << "您输入的不是一个整数,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}break;}insertcache->pnext = temp->pnext;temp->pnext = insertcache;cout << "需要继续添加吗?1、需要;其他、不需要" << endl;int tempnum;cin >> tempnum;if (cin.fail()) {tempnum = 0;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');}if (tempnum == 1){return true;}else{return false;}
}

在这里插入图片描述
在这里插入图片描述

bool AfterInsert(My_List* temp)
{My_List* insertcache = new My_List;while (temp->pnext){temp = temp->pnext;}while (true){cout << "请输入您所要添加资源的编号>=" << endl;cin >> insertcache->pdata.My_num;if (cin.fail()) {cout << "您输入的不是一个整数,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}cout << "请输入您所要添加资源的名字>=" << endl;cin >> insertcache->pdata.My_name;if (cin.fail()) {cout << "您输入的不是一个正确的名字,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}cout << "请输入您所要添加资源的剩余量>=" << endl;cin >> insertcache->pdata.My_Resources;if (cin.fail()) {cout << "您输入的不是一个整数,请重新输入:" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');continue;}break;}insertcache->pnext = NULL;temp->pnext = insertcache;cout << "需要继续添加吗?1、需要;其他、不需要" << endl;int tempnum;cin >> tempnum;if (cin.fail()) {tempnum = 0;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');}if (tempnum == 1){return true;}else{return false;}
}

最后代码运行如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks 1. 文章简介2. 文章概括3 文章重点技术3.1 LLM的选择3.2 算数任务的可学习性(learnability)3.3 大模型的加减乘除 4. 数值实验结果5. 文章亮点6. 原文传送门7. References 1. 文章简介 标题&#xff…

java中使用HttpRequest发送请求调用自己的接口

(539条消息) java中使用HttpRequest发送请求_java httprequest_thankful_chn的博客-CSDN博客 <dependency><groupId>com.github.kevinsawicki</groupId><artifactId>http-request</artifactId><version>5.6</version></dependenc…

网络的构成要素【图解TCP/IP(笔记七)】

文章目录 网络的构成要素通信媒介与数据链路网卡中继器网桥/2层交换机路由器/3层交换机4&#xff5e;7层交换机网关各种设备及其对应网络分层概览 网络的构成要素 通信媒介与数据链路 计算机之间通过电缆相互连接。电缆可以分为很多种&#xff0c;包括双绞线电缆、光纤电缆、同…

Java InetAddress类

【InetAddress类】 【相关方法】 【使用方法实例】 【代码结果】

创新涌动于先,PingCAP 用户峰会 2023 成功举办

2023 年 7 月 13 日&#xff0c;企业级开源分布式数据库厂商 PingCAP 在京成功举办 PingCAP 用户峰会 2023。本届峰会以“创新涌动于先”为主题&#xff0c;PingCAP 全面解析了 AI 时代 TiDB 的演进方向&#xff0c;宣布 TiDB Serverless 正式商用。会上&#xff0c;PingCAP 携…

​python接口自动化(二十八)--html测试 报告——下(详解) ​

简介 五一小长假已经结束了&#xff0c;想必大家都吃饱喝足玩好了&#xff0c;那就继续学习吧。一天不学习&#xff0c;自己知道&#xff1b;两天不学习&#xff0c;对手知道&#xff1b;三天不学习&#xff0c;大家知道&#xff1b;一周不学习&#xff0c;智商输给猪。好了开个…

静态路由介绍

目录 静态路由配置方法&#xff08;基本配置&#xff09;&#xff1a; 静态路由的拓展配置 负载均衡 1.环回接口——测试 2.手工汇总——子网汇总 3.路由黑洞&#xff08;黑洞路由) 4.缺省路由 5.空接口——NULL 0 6.浮动静态路由 静态路由配置方法&#xff08;基本配置&#x…

DHorse v1.2.1 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统&#xff0c;具有持续集成、持续部署、微服务治理等功能&#xff0c;无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用&#xff0c;主要特点&#xff1a;部署简单、操作简洁、功能快速。 优化内…

「深度学习之优化算法」(十三)蝙蝠算法

1. 蝙蝠算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   蝙蝠算法(Bat Algorithm)是受蝙蝠回声定位的特性启发而提出的新兴算法,提出时间是2010年,虽然距今(2020)有近10年,但与其它的经典算法相比仍算一个新算法。算法也已有一定规模的研究和应用,但仍…

Android 14适配

Google I/O 2023 发布的 Android beta2 &#xff0c;Android 14 将在2023年第三季度发布。Google Play 已经开始强制要求targetSdkVersion 33适配&#xff0c;所以 targetSdkVersion 34适配也是非常有必要的。 前台服务类型&#xff08;Foreground service types are required&…

PyTorch: 池化-线性-激活函数层

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-池化-线性-激活函数层池化层最大池化&#xff1a;nn.MaxPool2d()nn.AvgPool2d()nn.MaxUnpool2d()线性层激…

Java设计模式之结构型-桥接模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 1、支付方式 2、支付渠道 五、总结 一、基础概念 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;其主要目的是“将抽象部分与实现部分分离&#xff0c;使它们都可以独立地…

[解决Github 克隆错误] unable to access ‘xxx‘: Recv failure: Connect

1.错误描述&#xff1a; 从GitHub上克隆仓库到本地&#xff0c;出现错误&#xff1a; unable to access https://github.com/xxxx: Recv failure: Connection was reset。 克隆失败。 2.第一次解决此问题&#xff1a;从终端输入&#xff1a; git config --global http.sslVer…

GOPATH、GOROOT(VSCode编写第一个go程序)

1. GOROOT和GOPATH GOROOT 和 GOPATH 都是 Go 语言中的环境变量&#xff0c;用于指定 Go 工具链和工作区的路径。 GOROOT 指定了 Go 工具链的安装路径&#xff0c;它包含了 Go 语言的标准库、编译器等工具。在使用 Go 编译器、运行时等工具时&#xff0c;它们会默认从 GOROOT…

LabVIEW开发图像采集和图像处理程序

LabVIEW开发图像采集和图像处理程序 扫描电子显微镜&#xff08;SEM&#xff09;是一种功能强大的工具&#xff0c;广泛用于高分辨率的生物和半导体样品检测。然而&#xff0c;对于大面积或3D成像&#xff0c;SEM成像是一个耗时的过程。MBSEM旨在通过同时扫描多个像素来减少采…

Vue3使用element-plus实现弹窗效果-demo

使用 <ShareDialog v-model"isShow" onChangeDialog"onChangeDialog" /> import ShareDialog from ./ShareDialog.vue; const isShow ref(false); const onShowDialog (show) > {isShow.value show; }; const onChangeDialog (val) > {co…

关于 Eclipse 的一场 “三角关系”

上个世纪 90 年代&#xff0c;世界上的计算机要么不联网&#xff0c;要么在企业内部联网。但是&#xff0c;在互联网的概念下&#xff0c;计算机之间共享信息和资源的需求成为了必要。 1995 年 5 月&#xff0c;Java 横空出世。Java 的父亲是当时凭借 Solaris 操作系统风头正盛…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改&#xff0c;芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录&#xff1a; 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…

数据结构——各种常见算法的实现方法和思路

文章目录 常见的排序算法类型复杂度和稳定性 1.冒泡排序2.直接插入排序3.希尔排序4.简单选择排序方法1&#xff1a;双向遍历选择排序方法2&#xff1a;单向遍历选择排序 5.归并排序方法1&#xff1a;递归方法2&#xff1a;非递归 6.快速排序方法1&#xff1a;随机取keyi方法2&a…

谈 Delphi 中 JSON 的简便操作(非常简单)

我曾有讲过Delphi操作JSON的方法&#xff0c;特别是这一篇【delphi】类和记录的 helpers&#xff08;助手&#xff09;。但是因为当时是主要介绍的是Delphi的Helper&#xff0c;大家可能并没注意到Delphi中JSON的简便操作方法。 早期Delphi并没有自己的JSON操作库&#xff0c;大…