当前位置: 首页 > news >正文

表格如何给网站做链接网站建设盈利

表格如何给网站做链接,网站建设盈利,门户网站都有哪些,wordpress里网站名称在哪里修改前言 之前大摆了5天多#xff0c;没怎么学编程#xff0c;自昨日起#xff0c;觉不可如此#xff0c;痛定思痛#xff0c;开始继续学习#xff0c;昨天刷了20多道简单级别的力扣#xff0c;今天想把链表好好巩固一下#xff0c;于是乎#xff0c;把单链表的增删查改搞…前言 之前大摆了5天多没怎么学编程自昨日起觉不可如此痛定思痛开始继续学习昨天刷了20多道简单级别的力扣今天想把链表好好巩固一下于是乎把单链表的增删查改搞了出来还用单链表写了通讯录等下写完博客在去和双链表缠斗一番ok王子公主请看下文 在大刀阔斧地写代码前我们先稍稍复习一下书面知识。 1. 链表的概念及结构 概念 链表是⼀种物理存储结构上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 链表的结构跟火车车厢相似淡季时车厢会相应减少旺季时车厢会额外增加几节。将某节车厢去掉/加上不会影响其他⻋厢每节车厢都是独⽴存在的。 且每节车厢都有车门。想象⼀下这样的场景假设每节⻋厢的车门都是锁上的状 态需要不同的钥匙才能解锁每次只能携带⼀把钥匙的情况下如何从车头走到车尾 最简单的做法 每节⻋厢⾥都放⼀把下⼀节车厢的钥匙。 在链表⾥每节“⻋厢”是什么样的呢 与顺序表不同的是 链表⾥的每节⻋厢都是独⽴申请下来的空间我们称之为“结点/节点” 节点的组成主要有两个部分当前节点要保存的数据和保存下⼀个节点的地址指针变量。 图中指针变量 plist保存的是第⼀个节点的地址我们称plist此时“指向”第⼀个节点如果我们希 望plist“指向”第⼆个节点时只需要修改plist保存的内容为0x0012FFA0。 为什么还需要指针变量来保存下⼀个节点的位置 链表中每个节点都是独⽴申请的即需要插⼊数据时才去申请⼀块节点的空间我们需要通过指针 变量来保存下⼀个节点位置才能从当前节点找到下⼀个节点。 结合前⾯学到的结构体知识我们可以给出每个节点对应的结构体代码 假设当前保存的节点为整型 struct SListNode { int data; // 节点数据 struct SListNode * next ; // 指针变量⽤保存下⼀个节点的地址 }; 当我们想要保存⼀个整型数据时实际是向操作系统申请了⼀块内存这个内存不仅要保存整型数 据也需要保存下⼀个节点的地址当下⼀个节点为空时保存的地址为空。 当我们想要从第⼀个节点⾛到最后⼀个节点时只需要在前⼀个节点拿上下⼀个节点的地址下⼀个 节点的钥匙就可以了 补充说明 1、链式机构在逻辑上是连续的在物理结构上不⼀定连续 2、节点⼀般是从堆上申请的 3、从堆上申请来的空间是按照⼀定策略分配出来的每次申请的空间可能连续可能不连续 2.链表的分类 链表的结构⾮常多样以下情况组合起来就有8种2 x 2 x 2链表结构 图片来源比特就业课课件 虽然有这么多的链表的结构但是我们实际中最常⽤还是两种结构 单链表 和 双向带头循环链表 1. ⽆头单向⾮循环链表结构简单⼀般不会单独⽤来存数据。实际中更多是作为其他数据结 构的⼦结构如哈希桶、图的邻接表等等。另外这种结构在笔试⾯试中出现很多。 2. 带头双向循环链表结构最复杂⼀般⽤在单独存储数据。实际中使⽤的链表数据结构都 是带头双向循环链表。另外这个结构虽然结构复杂但是使⽤代码实现以后会发现结构会带 来很多优势实现反⽽简单了后⾯我们代码实现了就知道了。 3.单链表的增删查改 毕竟只是增删查改我们只需要写两个文件就够了一个头文件一个源文件写函数 typedef int SLTDataType; typedef struct SListNode { // }SLTNode;void SLTPrint(SLTNode* phead);//头部插入删除/尾部插入删除 void SLTPushBack(SLTNode** pphead, SLTDataType x); void SLTPushFront(SLTNode** pphead, SLTDataType x); void SLTPopBack(SLTNode** pphead); void SLTPopFront(SLTNode** pphead);//查找 SLTNode* SLTFind(SLTNode* phead, SLTDataType x); //在指定位置之前插入数据 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); //删除pos节点 void SLTErase(SLTNode** pphead, SLTNode* pos); //在指定位置之后插入数据 void SLTInsertAfter(SLTNode* pos, SLTDataType x); //删除pos之后的节点 void SLTEraseAfter(SLTNode* pos); //销毁链表 void SListDesTroy(SLTNode** pphead); 接着开始实现函数 #includeSLT.h SLTNode* creat(SLTDataType x) { SLTNode* p malloc(sizeof(SLTNode)); p-val x; p-next NULL; return p; } void SLTPrint(SLTNode* phead) { while (phead) { printf(%d , phead-val); phead phead-next; } puts(); } //尾部插入 void SLTPushBack(SLTNode** pphead, SLTDataType x) { assert(pphead); if (*pphead NULL) *pphead creat(x); else { while ((*pphead)-next) { *pphead (*pphead)-next; } (*pphead)-next creat(x); } } //头部插入 void SLTPushFront(SLTNode** pphead, SLTDataType x) { assert(pphead); if (*pphead NULL) if (*pphead NULL) *pphead creat(x); else { SLTNode* new (*pphead); *pphead creat(x); (*pphead)-next new; } } //尾部删除 void SLTPopBack(SLTNode** pphead) { assert(pphead); assert(*pphead); if (((*pphead)-next) NULL) *pphead NULL; else { while ((*pphead)-next-next) { (*pphead) (*pphead)-next; } free((*pphead)-next); (*pphead)-next NULL; } } //头部删除 void SLTPopFront(SLTNode** pphead) { assert(pphead); assert(*pphead); SLTNode* new (*pphead)-next; free(*pphead); *pphead new; } //查找 SLTNode* SLTFind(SLTNode* phead, SLTDataType x) { while (pheadphead-val ! x) phead phead-next; if (phead NULL) { printf(你要找的内容不存在\n); return 0; } return phead; } //在指定位置之前插入数据 void SLTInsertFront(SLTNode** pphead, SLTNode* pos, SLTDataType x) { assert(pphead); assert(*pphead); assert(pos); if ((*pphead) pos) { *pphead creat(x); (*pphead)-next pos; } else { while ((*pphead)-next ! pos) { *pphead (*pphead)-next; } SLTNode* new (*pphead)-next;//不对劲!!!!!! (*pphead)-next creat(x); (*pphead)-next-next pos; } } //删除pos节点 void SLTErase(SLTNode** pphead, SLTNode* pos) { assert(pphead); assert(*pphead); if (*pphead pos) { free(pos); *pphead NULL; } else { while ((*pphead)-next ! pos) *pphead (*pphead)-next; (*pphead)-next (*pphead)-next-next; free(pos); pos NULL; } } //在指定位置之后插入数据 void SLTInsertAfter(SLTNode* pos, SLTDataType x) { assert(pos); SLTNode* new pos-next; pos-next creat(x); pos-next-next new; } //删除pos之后的节点 void SLTEraseAfter(SLTNode* pos) { assert(pos); SLTNode* new pos-next; pos-next pos-next-next; free(new); } //销毁链表 void SListDesTroy(SLTNode** pphead) { assert(pphead); while (*pphead ! NULL) { SLTNode* p (*pphead)-next; free(*pphead); *pphead p; } } ok那么下次单链表的分享就先告一段落了感谢观看
http://www.zqtcl.cn/news/733955/

相关文章:

  • 内容平台策划书网站优化公司推荐
  • 怎么在阿里巴巴网站做公司wordpress伪静态404
  • 配置 tomcat 做网站网站建设用什么语言
  • 大型的营销型网站建设怎么选择网站建设公司
  • 怎么用网站源码建站友情链接交换方式有哪些
  • 国外免费网站服务器链接幼教网站建设分析
  • 做药品网站有哪些陕西专业网站建设价格
  • 网络公司做网站网站 服务器选择
  • 湖南省重点建设项目办公室网站河南省住建局官网
  • 建设网站企业网上银行登录入口官方论坛系统
  • 嘉定建设机械网站合肥制作网页设计
  • 外链网站有哪些空港经济区内的建设工程网站
  • 企业网站开发价阿里云快速备份网站
  • 大型电子商务网站建设成本ai网页生成
  • 网页播放视频 网站开发常用网站搜索引擎
  • 制作一个购物网站要多少钱做创意小视频的网站
  • 淇县网站建设软件定制流程
  • 17网站一起做网店代发流程wordpress悬浮 联系
  • 如何查网站外链快速开发平台 免费开源
  • 做网站有哪些流程怎么做网站电影
  • 做街机棋牌上什么网站发广告网站策划和运营
  • 建网站是什么专业类别阳江网红人物
  • 网站建设工作描述株洲市建设质监站网站
  • 做网站 橙色怎么搭配吐鲁番市网站建设
  • 企业信息网站衡阳高端网站建设
  • 中小学网站建设小程序开发费用是多少
  • 网站开发项目可行性分析单位logo设计
  • 做最好的美食分享网站网站源码网站
  • 宝塔搭建app教程360优化大师下载
  • 杭州网站制作 乐云践新开发公司竣工员工奖励计划