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

孝感网站的建设专业制作网站哪家专业

孝感网站的建设,专业制作网站哪家专业,事业单位网站建设注销情况说明,建筑工程网上申报如何补件上一篇博客我们学习了线性表中的顺序表#xff0c;这一篇博客让我们继续往下了解线性表的链表#xff0c;链表分为好几种结构#xff0c;活不多说#xff0c;让我们开始学习吧#xff01; 目录 1.链表 2.链表的结构 3.单链表的实现 1.链表 1.概念#xff1a;它是一种物…上一篇博客我们学习了线性表中的顺序表这一篇博客让我们继续往下了解线性表的链表链表分为好几种结构活不多说让我们开始学习吧 目录 1.链表 2.链表的结构 3.单链表的实现 1.链表 1.概念它是一种物理存储结构上非连续非顺序的存储结构数据元素的逻辑顺序是通过链                表中的指针链接次序实现的。它在空间上按需给空间不要求物理空间的连续                和顺序表不同它头部和中间的数据的插入就不需要挪动数据。链表的实现是通过                指针的。 2.有些老铁可能不明白什么是物理结构它就是在内存中实实在在的存储形式。 什么是不连续非顺序我们画图来给大家解释一下 在这些节点中间我们可以插入新的节点又是新的地址所以说它不是按顺序走的。这些节点在内存中可能这有一个节点也可能那有一个节点但它们彼此之间通过指针相连接只要指针不断就可以找到下一个节点。 3.链表只能一个一个诶个访问只能从头找因为一旦它找到下一个节点它就不知道上一个节点的位置了双向链表可以找到上一个我们到了那个章节在继续学习。这时又显示出顺序表的好处了因为它可以直接定位到要查找数据的位置但是它会造成空间的浪费所以说有好有坏需要大家自己体会。 2.链表的结构 链表分为八种结构在这里先给大家一个总体的框架方便接下来的学习 单链表双链表不带头链表带头链表循环链表不循环链表这六种链表构成了链表的八种结构分别是 1.单向不带头不循环链表 2.单向不带头循环链表 3.单向带头不循环链表 4.单向带头循环链表 5.双向不带头不循环链表 6.双向不带头循环链表 7.双向带头不循环链表 8.双向带头循环链表 我们今天在这里会实现第一种结构单向不带头不循环链表相信通过这个链表的实现大家可以把2,3,4种结构都实现。 3.单链表的实现 现在我们来实现这个单链表可以类比顺序表写这一部分的代码都大差不差具体要看怎么实现。 SList.h文件 #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h #includeassert.htypedef int ALTDataType;//创建结构体用来创建链表组成元素 typedef struct SListNode {ALTDataType data;//链表数据struct SListNode* next;//链表指向下一个元素的指针指向下一个节点的位置 }SLN;//开辟空间来存入数据 SLN* BuySListNode(ALTDataType x); //打印链表 void SListPrint(SLN* phead); //头插 void sListPushFront(SLN** pphead, ALTDataType x); //尾插 void sListPushBack(SLN** pphead, ALTDataType x); //头删 void sListPopFront(SLN** pphead); //尾删 void sListPopBack(SLN** pphead); //查找链表 SLN* sListFind(SLN* phead, ALTDataType x); //修改对应链表位置的数据 void sListModify(SLN* phead, SLN* pos, ALTDataType x, ALTDataType y); //任意位置的插入,在pos位置的前一个位置插入 void sListInsert(SLN** pphead, SLN* pos, ALTDataType x); //任意位置的删除 void sListErase(SLN** pphead, SLN* pos); //销毁链表 void destorySList(SLN* phead); SList.c文件 #includeSList.h//开辟空间来存入数据 SLN* BuySListNode(ALTDataType x) {SLN* newnode (SLN*)malloc(sizeof(SLN));if (newnode NULL){perror(malloc);return NULL;}newnode-data x;newnode-next NULL;return newnode; }//打印链表 void SListPrint(SLN* phead) {assert(phead);SLN* cur phead;while (cur){printf(%d-, cur-data);cur cur-next;}printf(\n); }//头插 //想要头插我们要把新节点的地址给到头节点再把新节点定义为新的头节点 void sListPushFront(SLN** pphead, ALTDataType x) {SLN* newnode BuySListNode(x);newnode-next *pphead;*pphead newnode; }//尾插 void sListPushBack(SLN** pphead, ALTDataType x) {SLN* newnode BuySListNode(x);//若一开始链表为空我们直接插入一个新节点if (*pphead NULL){*pphead newnode;}//我们要创建一个变量找到链表的尾端从尾端插入SLN* tail *pphead;while (tail-next){tail tail-next;}tail-next newnode;//尾节点链接新节点 }//头删 void sListPopFront(SLN** pphead) {assert(*pphead);SLN* next (*pphead)-next;//*小于-的优先级编译器不通过free(*pphead);*pphead NULL;*pphead next; } //尾删 void sListPopBack(SLN** pphead) {assert(*pphead);//当只有一个节点时if ((*pphead)-next NULL){free(*pphead);*pphead NULL;return;}SLN* tail *pphead;SLN* prev NULL;while (tail-next){prev tail;tail tail-next;}free(tail);tail NULL;prev-next NULL; } //查找链表 SLN* sListFind(SLN* phead, ALTDataType x) {assert(phead);SLN* cur phead;while (cur){if (cur-data x){return cur;}cur cur-next;}return NULL; } //修改对应链表位置的数据 void sListModify(SLN* phead, SLN* pos, ALTDataType x, ALTDataType y) {pos sListFind(phead, x);pos-data y; } //任意位置的插入,在pos位置的前一个位置插入 void sListInsert(SLN** pphead, SLN* pos, ALTDataType x) {if (pos *pphead){sListPushFront(pphead, x);return;}SLN* newnode BuySListNode(x);SLN* prev *pphead;while (prev-next ! pos){prev prev-next;}prev-next newnode;newnode-next pos; } //任意位置的删除,删除pos位置的值 void sListErase(SLN** pphead, SLN* pos) {if (pos *pphead){sListPopFront(pphead);return;}SLN* prev *pphead;while (prev-next ! pos){prev prev-next;}prev-next pos-next;free(pos);pos NULL; } //销毁链表,这些空间我们要一个一个释放防止内存泄漏 void destorySList(SLN* phead) {assert(phead);SLN* tail phead-next;while (tail){SLN* next tail-next;free(tail);tail NULL;tail next;}free(phead);phead NULL; } test.c文件 #includeSList.hvoid Test1() {SLN* plist NULL;SLN* pos NULL;sListPushFront(plist, 4);sListPushFront(plist, 3);sListPushFront(plist, 2);sListPushFront(plist, 1);SListPrint(plist);sListPushBack(plist, 5);sListPushBack(plist, 6);sListPushBack(plist, 7);sListPushBack(plist, 8);SListPrint(plist);sListPopFront(plist);sListPopFront(plist);SListPrint(plist);sListPopBack(plist);sListPopBack(plist);SListPrint(plist);pos sListFind(plist, 5);if (pos NULL){printf(找不到该数据\n);}else{printf(已找到该数据现在进行修改\n);sListModify(plist, pos, 5, 50);}SListPrint(plist);pos sListFind(plist, 50);if (pos NULL){printf(找不到该数据\n);}else{printf(已找到该数据现在进行在pos前插入数据\n);sListInsert(plist, pos, 20);}SListPrint(plist);pos sListFind(plist, 20);if (pos NULL){printf(找不到该数据\n);}else{printf(已找到该数据现在进行对pos位置数据的删除\n);sListErase(plist, pos);}SListPrint(plist);destorySList(plist);printf(链表已销毁\n); } int main() {Test1();return 0; } 结果大家下去还是要自己敲一遍代码才能做到掌握 好了今天的内容就是这些我们下期再见铁汁们 感谢品读
http://www.pierceye.com/news/350254/

相关文章:

  • 上海网站制作公司的排名药品网站如何建设
  • 模板网站建设包括哪些wordpress怎么加关键词和描述
  • 温岭专业自适应网站建设响应式网站 模版
  • 高端包装设计优化 英语
  • 佛山新网站建设方案笔记本做网站服务器
  • c 企业网站开发杭州百度人工优化
  • 瑞安公司网站建设wordpress 主题和插件下载失败
  • 茶楼网站模板wordpress后台图
  • 做网站的流程方法wordpress 导航栏 排序
  • 当当网书店网站建设案例照片制作相册
  • 手机网站空间wordpress改微博系统
  • 东莞阿里网站设计泰安网站营销推广
  • 网站可以换域名吗北京建站公司兴田德润很好
  • 烟台做网站建设大宗商品交易平台是什么
  • 网站安全建设目标昆明网站制作企业
  • 个人网站更换域名企业网站建设套餐价格
  • 什么网站做海宁的房产好自己做软件 做网站需要学会哪些
  • 品牌网站建设浩森宇特软件工程师年薪多少
  • 做网站没有数据库ppt模板制作免费
  • 网站建设代码合同重庆住房和城乡建设部网站的打印准考证
  • 天气网站建设wordpress yasaer
  • 无忧网络网站建设响应式网页设计技术有哪些
  • 非常好的网站建设公司上海如何批量建站
  • 珠海市官网网站建设品牌深圳创业补贴去哪里申请
  • 建立传媒公司网站wordpress 农场主题
  • 如何用ps做网站导航条劳保用品 技术支持 东莞网站建设
  • 网站数据库迁移背景图网站
  • 1 网站建设的目标是什么密码管理系统admin
  • 深圳专业企业网站制作哪家好wordpress ality
  • 网站开发毕业设计摘要范文国际空间站