深圳网站开发平台星速浏览器

bicheng/2026/1/22 17:48:05/文章来源:
深圳网站开发平台,星速浏览器,四川住房建设厅网站首页,亚马逊雨林有多恐怖❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主#xff0c;代码兴国#xff01;❤❤❤ 哈咯各位铁汁们#xff0c;大家新年过得快乐吗#xff1f;反正大伟是过得很快乐#xff0c;天天就是玩玩玩… ❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主代码兴国❤❤❤ 哈咯各位铁汁们大家新年过得快乐吗反正大伟是过得很快乐天天就是玩玩玩吃吃吃 (^▽^ )。不过堕落的生活不能持续太久所以从今天开始大伟又要继续更新我们的数据结构啦啪叽啪叽o(ε*)。 OK那么今天要学的就是我们数据结构中很重要的一环单链表。 那首先我们需要知道链表是什么东西 概念链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。  形象一点就是链表就是一列火车链表中的每一个节点就是火车的每一节车厢每一个车厢都是单独存在的而每两个车厢都是有前后联系的为了进入中间的某节车厢就需要从这节车厢的上一节或下一节进入。 那在链表中这些车厢是什么样子的呢 与顺序表不同的是链表⾥的每节⻋厢都是独⽴申请下来的空间我们称之为“结点/节点” 节点的组成主要有两个部分当前节点要保存的数据和保存下⼀个节点的地址指针变量。   图中指针变量plist保存的是第⼀个节点的地址我们称plist此时“指向”第⼀个节点如果我们希望plist“指向”第⼆个节点时就需要指针变量来保存下⼀个节点的位置。那该如何做呢 结合前⾯学到的结构体知识我们可以给出每个节点对应的结构体代码 struct SListNode {int data; //节点数据 struct SListNode* next; //指针变量⽤保存下⼀个节点的地址 };当我们想要保存⼀个整型数据时实际是向操作系统申请了⼀块内存这个内存不仅要保存整型数 据也需要保存下⼀个节点的地址当下⼀个节点为空时保存的地址为空。 而当我们想要从第⼀个节点⾛到最后⼀个节点时只需要在前⼀个节点拿上下⼀个节点的地址下⼀个 节点的钥匙就可以了。 和循序表类似我们的单链表也有增删查改的功能那接下来就开码把 当然了首先我们还是开三个文件SL.h  SL.c  test.c 。功能的话不需要多说了吧~ SL.h #includestdio.h #includestring.h #includeassert.h #includestdlib.h #includemalloc.h typedef int SLDataTpye; typedef struct SListNode {SLDataTpye data;struct SListNode* next; }SLNode;void SLPrint(SLNode* phead); //打印链表 SLNode* SLBuyNode(SLDataTpye x); //创建链表节点 void SLPushFront(SLNode** pphead, SLDataTpye x); //头插 void SLPushBack(SLNode** pphead, SLDataTpye x); //尾插 void SLPopFront(SLNode** pphead); //头删 void SLPopBack(SLNode** pphead); //尾删 SLNode* SLFind(SLNode* phead, SLDataTpye x); //查找链表元素 void SLInsertFront(SLNode** pphead, SLNode* pos, SLDataTpye x); //在链表某位置前插入 void SLInsertAfter(SLNode** pphead, SLNode* pos, SLDataTpye x); //在链表某位置后插入 void SLErase(SLNode** pphead, SLNode* pos); //删除某位置下标元素 void SLEraseAfter(SLNode* pos); //删除某位置元素下标后面一个位置的元素 void SLDestroy(SLNode* phead); //摧毁链表 SL.c SLPrint void SLPrint(SLNode* phead) {SLNode* cur phead; //cur指向头结点然后依次往下走while (cur){printf(%d-, cur-data);cur cur-next;}printf(NULL); } SLBuyNode SLNode* SLBuyNode(SLDataTpye x) {SLNode* newnode (SLNode*)malloc(sizeof(SLNode)); //每次开辟一个空间if (newnode NULL){perror(malloc);return;} //若开辟失败newnode-data x;newnode-next NULL;return newnode; } SLPushFront void SLPushFront(SLNode** pphead, SLDataTpye x) {assert(pphead);SLNode* newnode SLBuyNode(x); //在链表头结点前插入然后将头结点设置为新插入的节点newnode-next *pphead;*pphead newnode; } SLPushBack void SLPushBack(SLNode** pphead, SLDataTpye x) {assert(pphead);SLNode* newnode SLBuyNode(x); //若链表为空则直接将新的节点设置为头结点if (*pphead NULL){*pphead newnode;} //若链表不为空则循环找到最后一个节点再将新创建的节点接到尾节点后面else{SLNode* tail *pphead;while (tail-next){tail tail-next;}tail-next newnode;} } SLPopFront void SLPopFront(SLNode** pphead) {assert(pphead);assert(*pphead); //让cur保存当前头结点然后直接让头结点往后走一个再释放刚刚保存的cur的空间因为释放了空间且当前空间不再使用所以里面的值也不需要关心了SLNode* cur *pphead;*pphead (*pphead)-next;free(cur); } SLPopBack void SLPopBack(SLNode** pphead) {assert(pphead);assert(*pphead); //若链表只有一个元素则将链表置空if ((*pphead)-next NULL){free(*pphead);*pphead NULL;} //若链表有多余一个元素找尾节点的前一个节点再释放掉尾节点else{SLNode* tail *pphead;while (tail-next-next){tail tail-next;}free(tail-next);tail-next NULL;} } SLFind SLNode* SLFind(SLNode* phead, SLDataTpye x) {SLNode* cur phead; //直接while循环找若找到则返回此节点若找不到则返回空while (cur){if (cur-data x){return cur;}cur cur-next;}return NULL; }SLInsertFront void SLInsertFront(SLNode** pphead, SLNode* pos, SLDataTpye x) {assert(pphead);assert(pos); //若插入的位置正好是头结点则直接头插if (pos *pphead){SLPushFront(pphead, x);} //若不是则找到需要插入节点的前一个节点然后将值为x的节点插入中间else{SLNode* prev *pphead;while (prev-next ! pos){prev prev-next;}SLNode*newnode SLBuyNode(x);newnode-next pos;prev-next newnode;} } SLInsertAfter void SLInsertAfter(SLNode** pphead, SLNode* pos, SLDataTpye x) {assert(pphead);assert(pos);SLNode* newnode SLBuyNode(x); //注意顺序要先将newnode的next指向pos的next不然会找不到pos的next节点大家可以想一想为什么newnode-next pos-next;pos-next newnode; } SLErase oid SLErase(SLNode** pphead, SLNode* pos) {assert(pphead);assert(pos); //若要删除的位置为头结点则直接头删if (pos *pphead){SLPopFront(pphead);} //否则则找到此节点的前一个节点然后让前一个节点的next指向当前节点的next再释放当前节点的空间else{SLNode* prev *pphead;while (prev-next ! pos){prev prev-next;}prev-next pos-next;free(pos);} } SLEraseAfter void SLEraseAfter(SLNode* pos) {assert(pos);assert(pos-next); //直接改变当前节点的next指向但是要保存当前节点的next否则不好释放空间SLNode* next pos-next;pos-next pos-next-next;free(next); } SLDestroy void SLDestroy(SLNode* phead) {SLNode* cur phead; //全部空间释放while (cur){SLNode* next cur-next;free(cur);cur next;} } OKOK以上就是我们的整体代码的主逻辑的实现那我们再来测试一下吧 test.c #include SL.h void test1() {SLNode* plist NULL;SLPushFront(plist, 5);//5-NULLSLPushFront(plist, 2);//2-5-NULLSLPushBack(plist, 7);//2-5-7-NULLSLPushBack(plist, 9);//2-5-7-9-NULLSLPopBack(plist);//2-5-7-NULLSLPopFront(plist);//5-7-NULLSLNode* pos SLFind(plist, 7);SLInsertFront(plist, pos, 40);//5-40-7-NULLSLInsertAfter(plist, pos, 40);5-40-7-40-NULLSLPrint(plist);printf(\n);SLPrint(pos);//SLErase(plist, pos);//printf(\n);//SLPrint(plist);SLEraseAfter(pos);//5-40-7-NULLprintf(\n);SLPrint(plist); } int main() {test1();return 0; } 那我们来看看我们输出的结果是不是和我们的预期一样的呢:  可以看到啊答案是完全对得上的所以此刻我们的单链表就完美实现啦大家私下可以自己试试 在最后我给大家提前预支一下其实单链表一共有八种  分别画图示意  那铁汁们来分析一下我们今天写的单链表是属于哪一种的呢(σд′)σ 对咯就是单向不带头不循环链表而这种链表我们通常把它称为单链表既然我们有八种链表各位铁汁们我们私下自己来想一想其他几种链表该怎么实现呢 大伟将在下一篇博客里给大家介绍单链表的死对头双向带头循环链表 。请敬请期待哦~ Genius only means hard-working all ones life. 天才只意味着终身不懈地努力 本篇博客也就到此为止了送大家一碗鸡汤勉励自己以及这世界上所有追逐梦想的赤子趁年华尚好努力提升自己莫欺少年穷

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

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

相关文章

做平面免费接单网站收费的网站如何免费

在使用ElementUI的Backtop回到顶部组件时&#xff0c;单独复制这一行代码 <el-backtop :right"100" :bottom"100" /> 发现页面在向下滚动时&#xff0c;并未出现Backtop组件。 可从以下3个方向进行分析&#xff1a; 指定target属性&#xff0c;且…

win7 iis建立网站正邦网站建设 优帮云

Context 上下文context.Context 是用来设置截止时间、同步信号&#xff0c;传递请求相关值的结构体。 context.Context 定义了四个需要实现的方法&#xff1a; Deadline: 返回 context.Context 被取消的时间。Done: 返回一个 Channel&#xff0c;这个 Channel 会在当前工作完…

微信小程序怎么制作网页网站优化个人工作室

今年前前后后也遇到了不少软件项目&#xff0c;想来想去还是拒绝了其中的大部分项目&#xff0c;当然也有一部分是客户拒绝我的&#xff0c;把这些经验教训分享给大家&#xff0c;一起探讨探讨&#xff0c;接了项目很容易深陷泥潭&#xff0c;累得死去活来不值得。拒绝软件项目…

如何推广网站话术工业设计网站外网

一、简介 在文件中统计出现最多个数的单词&#xff0c;将其输出到hdfs文件上。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都若干个单词以空白符分隔&#xff0c;需要统计出现最多的单词 …

做动画相册在哪个网站好织梦网站管理安装

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

如何建开发手机网站婚纱网站怎么做

工业显示器是智能制造领域应用比较广泛的电子产品&#xff0c;它广泛应用于工厂产线以及各种配套设备&#xff0c;在很大程度上提升了工厂的生产效率。 工业显示器按触摸方式分&#xff0c;可以分为工业触摸显示器和非触摸工业显示器两种;按使用环境分&#xff0c;又可以分为室…

网站模板上传工具建设网站的服务费是指什么

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 在一个n*n的棋盘中&#xff0c;每个格子中至多放置一个车&#xff0c;且要保证任何两个车都不能相互攻击&#xff0c;有多少中…

网站如何做导航条下拉菜单公司名字大全不重名

近日&#xff0c;阿里云人工智能平台PAI与华东师范大学数据科学与工程学院合作在自然语言处理顶级会议EMNLP2023上发表基于双曲空间和对比学习的垂直领域预训练语言模型。通过比较垂直领域和开放领域知识图谱数据结构的不同特性&#xff0c;发现在垂直领域的图谱结构具有全局稀…

网站建设珠江摩尔免费商标设计网

金刚石工具就是以金刚石为增强体&#xff0c;以金属或聚合物为基体的一类功能复合材料。金刚石工具已经成为当今公认的、唯一有效的硬脆非金属材料加工工具&#xff0c;比如&#xff0c;只有用金刚石刀具能加工超硬的陶瓷&#xff0c;尚无其他代用品。金刚石工具根据其用途的不…

东方建设集团有限公司网站工程施工合同免费版

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反…

昆明网站建设去出发科技公司wordpress图片搬到聚合图床

unicloud 获取集合collection并请求数据库 在unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)这一篇文章中,我介绍了unicloud数据库以及如何新建表数据 如果没看过的话可以去看看,然后在看这篇文章,因为这篇文章讲解的是如何获取云数据库的数据集合,要想获取,你得…

网站开发模板下载以营销型网站为主要营销方式的案例

技术介绍 本系统运用了JSP技术、SSM框架、B/S架构和myspl数据库 MySQL 介绍 MySQL是一种关系型的数据库管理系统&#xff0c;属于Oracle旗下的产品。MySQL的语言是非结构化的&#xff0c;使用的用户可以在数据上进行工作。这个数据库管理系统一经问世就受到了社会的广泛关注…

如何更新单位网站怎么做网站在网上能搜到你

目录 前言 蓝桥杯大赛历届真题&#xff08;点击查看&#xff09; 一、第十四届比赛题目 1.比赛原题 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、任务实现 1.NE555读取时机的问题 1&#xff09;缩短计数时间 2&#xff09;实时读取 2.温度传感器读…

温州网站排名优化东莞软件开发公司

1、创建MyMutexLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyMutexLED回车”&#xff0c;创建“MyMutexLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹 2、…

团购机票网站建设免费的网页制作软件

有一个环形的公路&#xff0c;上面共有n站&#xff0c;现在给定了顺时针第i站到第i1站之间的距离&#xff08;特殊的&#xff0c;也给出了第n站到第1站的距离&#xff09;&#xff0c;小*想着沿着公路第x站走到第y站&#xff0c;她想知道最短的距离是多少&#xff1f; 输入描述…

wordpress数据库和网站文件下载wordpress后台开发

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

怎么建设宣传网站黄冈论坛遗爱湖

一、安装目录介绍 其中&#xff1a;bin 目录下&#xff1a; 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性&#xff0c;就是你删除掉整个目录之后&#xff0c;重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置&#xff0c;所以很多…

深圳市城乡住房和建设局网站wordpress加载速度

连更&#xff01;&#xff01; 0 Abstract 先前的姿势引导图像合成方法简单的将人的外观与目标姿势进行对齐&#xff0c;这容易导致过拟合&#xff0c;因为缺乏对source person image的high-level semantic understanding&#xff1b;文章开发了一种新的训练范式&#xff1a;…

国内移动端网站做的最好的福田网站设计

您现在可以使用 MinIO 批处理框架执行 S3 删除操作&#xff0c;以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架&#xff0c;可以快速轻松地在 MinIO 部署中执行重复或批量操作&#xff0c;例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作&#xff0c;…

石家庄站列车时刻表wordpress数据库注入

RevCol&#xff1a;解决深度学习信息从低层&#xff08;输入&#xff09;传递至高层&#xff08;输出&#xff09;的过程中&#xff0c;信息会逐层丢失问题 学习解耦表示可逆列网络&#xff08;RevCol&#xff09;子特征1&#xff1a;多级可逆单元子特征2&#xff1a;可逆列架构…