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

江苏省交通运输厅门户网站建设管理网站首页制作教程

江苏省交通运输厅门户网站建设管理,网站首页制作教程,交互设计和ui设计区别,wordpress 克隆页面欢迎来到 Claffic 的博客 #x1f49e;#x1f49e;#x1f49e; “但有一枝堪比玉#xff0c;何须九畹始征兰?” 前言#xff1a; 栈是一种特殊的线性表#xff0c;就像开盖的桶一样#xff0c;从底部开始放数据#xff0c;从顶部开始取数据#xff0c;那么栈具体是… 欢迎来到 Claffic 的博客   “但有一枝堪比玉何须九畹始征兰?” 前言 栈是一种特殊的线性表就像开盖的桶一样从底部开始放数据从顶部开始取数据那么栈具体是如何实现的呢这篇博客为你解答 目录 Part1何为栈 1.栈的概念 2.栈的结构  Part2: 栈的实现 1.前期准备 1.1创建项目 1.2栈的结构 1.3栈的初始化 2.相关功能实现 2.1入栈 2.2检测栈是否为空  2.3出栈 2.4获取栈顶元素 2.5获取栈中有效元素的个数 2.6销毁栈  Part1何为栈 1.栈的概念 栈是一种特殊的线性表只允许从特定的一端插入或删除元素栈中数据的元素遵循后进先出原则(Last In First Out)。 进行数据插入和删除的一端称为栈顶另一端称栈底。  就像个桶子一样总是先从顶部放入或取出元素。 2.栈的结构  说完了栈的概念大家的脑海里也许就会有栈的基本样子了这里画图解释  我是图示 Part2: 栈的实现 1.前期准备 1.1创建项目 老样子三个项 SList.h头文件声明所有函数 SList.c源文件实现各函数 test.c  源文件主函数所在项可调用各函数。 1.2栈的结构 在创建结构体之前我们不妨要考虑一个问题 用数组还是链表来实现栈 数组存储空间在物理上连续随机访问时间复杂度O(1) 链表存储空间在逻辑上连续但物理上不一定连续随机访问时间复杂度O(N). 就栈的特点来说数组更接近。还是数组香哇。 所以我们 用数组来实现栈 创建一个结构体其中的元素包含  数组首元素的地址 栈顶 容量。 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack;1.3栈的初始化 既然创建了栈就要进行初始化 无非就是对结构体中的元素进行初始化 数组容量先定义一个初始大小4个元素大小并且是动态的。 栈顶的话可以是0也可以是-1 0时top 的位置就是栈顶元素的下一个位置 -1时top 的位置就是栈顶元素的位置。 在这里我们取 top 0 // 初始化栈 void StackInit(Stack* ps) {assert(ps);ps-a (STDataType*)malloc(sizeof(STDataType) * 4);if (ps-a NULL){perror(malloc fail);return;}ps-capacity 4;ps-top 0; }2.相关功能实现 2.1入栈 所谓入栈就相当于尾部插入新的数据。 要注意插入数据前需检查是否满容判断方法也很简单就看 栈顶与容量 是否相等就可以。 // 入栈 void StackPush(Stack* ps, STDataType data) {assert(ps);if (ps-capacity ps-top){STDataType* tmp (STDataType*)realloc(ps-a,sizeof(STDataType) * ps-capacity * 2);if (tmp NULL){perror(realloc fail);return;}ps-a tmp;ps-capacity * 2;}ps-a[ps-top] data;ps-top; }2.2检测栈是否为空  这里把检测栈是否为空单独封装成一个函数是为了出栈做铺垫 在栈为空的情况下是不能出栈的所以出栈前要检测栈是否为空 这里我们约定 如果为空返回非0结果如果为不为空返回0 // 检测栈是否为空如果为空返回非零结果如果不为空返回0 int StackEmpty(Stack* ps) {assert(ps);return ps-top 0;//表达式真为非0假为0 }2.3出栈 出栈就相当于删除数据但又不完全等于删除数据 它 只是改变了栈顶 栈顶之外的元素占有的空间不需要释放。 // 出栈 void StackPop(Stack* ps) {assert(ps);assert(!StackEmpty(ps));//注意逻辑反为空就报错ps-top--; }2.4获取栈顶元素 因为是栈总要在栈顶取元素的 // 获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);return ps-a[ps-top-1];//注意元素个数与下标差1 }2.5获取栈中有效元素的个数 其实就是栈顶啦栈顶的数值代表了栈中有效元素的个数 // 获取栈中有效元素个数 int StackSize(Stack* ps) {assert(ps);return ps-top; } 2.6销毁栈  用完了栈要记得销毁哦。 其实就是该释放的释放容量归0栈顶置为-1表示没有元素。 // 销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity 0;ps-top -1; }代码已上传至 我的gitee 拿走不谢~  总结 栈也是线性表具有后进先出的特点在有这总需求的情况下可以应用你学会了吗 码文不易  如果你觉得这篇文章还不错并且对你有帮助不妨支持一波哦
http://www.hkea.cn/news/14403006/

相关文章:

  • 做社区网站用什么程序好什么网站权重大
  • 广州哪家做网站还可以阿里巴巴网页版
  • 会计公司网站模板德吉机械东莞网站建设
  • 购物网站开发英文文献服务器租用多少钱一台
  • wordpress优化版模板整站优化cms
  • 兼职做视频的网站怎么做网页下载链接
  • 怎么做盗版网站赚钱游戏广告投放平台
  • asp.net mvc网站开发做美团团购网站
  • 做移门图的 网站有哪些义乌网站建设公司排名
  • 网站建设方面的课程北京建设工程建设交易信息网站
  • 湘潭网站建设 磐石网络荣誉新开三端互通传奇网站
  • 哪个网站做二手车买卖成都交易网站建设
  • 网站建设怎么更换图片北仑建设局网站
  • 百度地图 添加到网站公司如何做网站宣传
  • 邮箱网站架构常州网站建设 最易
  • 网站付费怎么做互联网行业的开发网站
  • 巩义做网站xd seo广告设计公司清晨必发图片
  • 做面包的网站asp.net做网站步骤
  • 山东诚铭建设机械有限公司网站湖北企业网站建设哪家好
  • 图书销售网站设计怎么做网站的整体风格包括
  • 东莞软件外包公司网站导航结构的优化
  • 建设网站需要注意什么问题青岛硅谷网站建设公司
  • php购物网站开发开发多久专业返利网站建设
  • 怎样自己创造网站网站创建需要多少钱
  • 网站色调代号wordpress super cache
  • 软件工程学科评估网站优化的目的
  • 阿里巴巴国际站买家入口wordpress批量该连接
  • 杭州外贸网站多少钱免费下载app软件并安装手机
  • 网站域名怎样注销陕西中交基础建设有限公司网站
  • 无忧网站建设哪家便宜网站建设部门