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

学校网站建设报价表wordpress主题 wiki

学校网站建设报价表,wordpress主题 wiki,织梦网站建设选项卡教程,重庆九龙坡区最新消息详解C语言实现链栈~#x1f60e;前言#x1f64c;整体实现内容分析#x1f49e;1.头文件编码实现#x1f64c;2.功能文件编码实现#x1f64c;3.测试函数功能代码#x1f64c;总结撒花#x1f49e;#x1f60e;博客昵称#xff1a;博客小梦 #x1f60a;最喜欢的座右… 详解C语言实现链栈~前言整体实现内容分析1.头文件编码实现2.功能文件编码实现3.测试函数功能代码总结撒花博客昵称博客小梦 最喜欢的座右铭全神贯注的上吧 作者简介一名热爱C/C算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主 博主小留言哈喽各位CSDN的uu们我是你的博客好友小梦希望我的文章可以给您带来一定的帮助话不多说文章推上欢迎大家在评论区唠嗑指正觉得好的话别忘了一键三连哦 前言 哈喽各位友友们我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下我仅已此文手把手带领大家详解C语言实现链栈~ 要是为了运用所学的链表的相关知识和算法。用代码来实现链栈也就是用链表来实现栈。都是精华内容可不要错过哟 整体实现内容分析 在使用链表来实现链栈时可以针对栈只在栈顶上后进先出的特点找什么样的链表实现比较好。我通过比较后觉得采用单链表的结构然后链表的首节点放在栈顶上。后面只需对首节点进行插入和删除即可。首先建立链表结构体然后建立队列结构体里面定义一个指向链表首节点的指head。然后依次实现栈的初始化销毁入栈出栈取栈顶元素判断栈是否为空栈上的元素个数遍历栈上元素等这些基本功能。 1.头文件编码实现 头文件的编写的整体思路分析 这里是有关头文件的编写和各种功能函数的声明首先用typedef关键字给存储数据类型取别名这样做的好处是以后想要改变栈的数据类型只需修改typedef int StDatetype;里的int即可。定义两个结构体一个是链表的一个是栈的。 #pragma once #includestdio.h #includestdlib.h #includeassert.h #includestdbool.htypedef int StDatetype; typedef struct StackNode {struct StackNode* next;StDatetype data;}ST; typedef struct Stack {ST* head;}Stack;//初始化void StackInit(ST* ps); //销毁 void StackDestory(ST* ps); //入栈 void StackPush(ST* ps, StDatetype x); //出栈 void StackPop(ST* ps); //栈上的数据个数 int StackSize(ST* ps); //栈顶元素 StDatetype StackTop(ST* ps); //判空 bool StackEmpty(ST* ps); 2.功能文件编码实现 功能文件的编写的整体思路分析 这里是功能文件的编写在涉及到指针的地方我都用了assert确保指针有效性在free掉指针时需要把指针置为空指针避免野指针的问题。第一个是初始化函数第二个是销毁函数实现。其中需要注意的是入栈和出栈的编写。入栈时先用malloc函数动态申请一个空间然后判断以下有没有开辟成功。需要注意的是需要把newnode置为NULL防止野指针的问题出现。然后将newnode的next指针指向head然后让head指向newnode这样就把元素入栈了。还有一种特殊情况是本来就是空的栈则新生成的newnode就是head。出栈函数实现需要定义一个next指针指向head下一个确保把栈顶元素删除后还能找到后面的元素。Free掉记得把指针置为NULL。其他函数没什么难点注意以上几个点即可实现以下函数。 #includeStack.h //初始化 void StackInit(Stack* ps) {assert(ps);ps-head NULL;} //销毁 void StackDestory(Stack* ps) {assert(ps);ST* cur ps-head;while (cur){ST* next cur-next;free(cur);cur next;}ps-head NULL;} //入栈 void StackPush(Stack* ps, StDatetype x) {assert(ps);ST* newnode (ST*)malloc(sizeof(ST));if (newnode NULL){printf(malloc fail\n);exit(-1);}newnode-data x;newnode-next NULL;if (ps-head NULL){ps-head newnode;}else{newnode-next ps-head;ps-head newnode;}} //出栈 void StackPop(Stack* ps) {assert(ps);assert(!StackEmpty(ps));if (ps-head-next NULL){free(ps-head);ps-head NULL;}else{ST* next ps-head-next;free(ps-head);ps-head next;} } //栈上的数据个数int StackSize(Stack * ps){assert(ps);int size 0;ST* cur ps-head;while (cur){size;cur cur-next;}return size;}//栈顶元素StDatetype StackTop(Stack* ps){assert(ps);assert(!StackEmpty(ps));return ps-head-data;}bool StackEmpty(Stack* ps) {assert(ps);return ps-head NULL; } 3.测试函数功能代码 #includeStack.hvoid Test1() {Stack s;StackInit(s);StackPush(s, 1);StackPush(s, 2);StackPush(s, 3);StackPush(s, 4);printf(栈上的元素个数:%d\n, StackSize(s));printf(栈顶元素%d\n, StackTop(s));if (StackEmpty(s)){printf(栈空\n);}else{printf(栈不为空\n);}printf(入栈输入顺序为1234出栈顺序输出\n);while (!StackEmpty(s)){printf(%d, StackTop(s));StackPop(s);}printf(\n);if (StackEmpty(s)){printf(栈空\n);}else{printf(栈不为空\n);}StackDestory(s);printf(\n); }int main() {Test1();return 0; } 功能测试结果展示图 总结撒花 本篇文章旨在分享详解C语言实现链栈。希望大家通过阅读此文有所收获本次关于栈的实现相对于之前链表的实现简单一点指针的指向没有那么复杂主要是对入栈和出栈的功能实现。但也有很多地方需要注意的。比如说野指针的问题动态开辟的空间一定要free掉并且把指针置为NULL。用动态实现相对于静态实现还比较灵活也能对空间有很大的节省。    如果我写的有什么不好之处请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~
http://www.hkea.cn/news/14375017/

相关文章:

  • 品牌型网站的设计做外卖网站需要多少钱
  • 往届生做网站编辑网站建设费应该怎样入账
  • 广州做地铁的公司网站永康好口碑关键词优化
  • 东莞专业的网站推广价格企业网站建设三个原则
  • 大城网站制作在哪个网站做ppt模板赚钱
  • 用瀑布流做的美食网站成都必去的地方排行榜
  • 秦皇岛网站制作人才招聘建设网站平台的建议
  • 网站界面ui设计国家开放大学答案手机网站建设软件有哪些内容
  • 简约网站首页湖南网站开发
  • 可以用AI做网站上的图吗建网站手机软件
  • 专业网站建设团队网站模板织梦免费
  • 怎么劝客户做网站关键词分析工具
  • 设计师 个人网站安卓app下载平台
  • 怎样黑网站效果图哪里可以制作
  • mg线上注册关键词优化排名用哪些软件比较好
  • 阅读的网站建设需要多少钱学前教育网站建设
  • 网站建设网页设计做网站wordpress替换谷歌字体
  • 网站建设企业合作邀请函google优化师
  • 电商网站建设图片有高并发,高访问量网站开发
  • 自己动手建立网站3有关网站开发的创意
  • 个人网站域名后缀做企业网站需要提供什么
  • 惠州网站优化建设网站模板免费下载网页模板
  • 宿州做企业网站进口网站建设
  • 青海省建设厅官方网站建设云建设银行安全网站
  • 行业网站建设蓝云网站怎么做英语和中文的
  • asp做的网站亚丝娜娜本子全彩办公网新闻上传网站开发
  • 影楼网站服务iis ip访问网站
  • 成都科技网站建设咨询电话好的平面设计灵感网站
  • 去哪里找做网站的有什么做ppt的网站
  • 一般公路建设招投标在什么网站上网络舆情应急预案