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

网站建设价格如何郑州企业网站快速优化价格

网站建设价格如何,郑州企业网站快速优化价格,网络推广公司企业,宁波代理公司注册1.栈的概念及结构 栈#xff1a;一种特殊的线性表#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO#xff08;Last In First Out#xff09;的原则。 压栈…1.栈的概念及结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 2.栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 2.1定义一个动态栈 typedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }ST; 2.2栈的初始化 void STInit(ST* ps) {assert(ps);ps-a NULL;ps-top 0;ps-capacity 0;} 2.3栈的销毁 void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-top ps-capacity 0; } 2.4数据进栈 数据进栈的话首先要考虑一下是否需要扩容所以先判断一下top是否等于capacity如果满了的话再判断一下capacity是否是第一次扩容如果是的话则扩容至4不是的话则扩2倍再对空间进行扩容这里巧妙地利用了realloc这个库函数因为如果需要扩容的这个空间是0则相当于是malloc扩容完之后就将数据放进top这个位置然后再将top这样才会使得top一直是栈顶元素的下一个位置。 void STPush(ST* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){int newCapacity ps-capacity 0 ? 4:ps-capacity * 2;STDataType* tmp (STDataType*) realloc(ps-a, sizeof(STDataType) * newCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; } 2.5数据出栈 先保证这个栈不是空的top0才有数据可以出。出栈直接top--就行了。 void STPop(ST* ps, STDataType x) {assert(ps);//空assert(ps-top 0);--ps-top; } 2.6栈的数据个数 int STSize(ST* ps) {assert(ps);return ps-top; } 2.7判断栈是否为空 bool STEmpty(ST* ps) {assert(ps);return ps-top 0; } 2.8获取栈顶元素 这里需要注意一下栈顶元素的位置是top-1. STDataType STTop(ST* ps) {assert(ps);assert(ps-top 0);return ps-a[ps-top - 1]; } 完整代码 Stack.h: #pragma once #includestdio.h #includestdlib.h #includeassert.h #includestdbool.htypedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }ST;void STInit(ST* ps); void STDestroy(ST* ps); void STPush(ST* ps,STDataType x); void STPop(ST* ps); int STSize(ST* ps); bool STEmpty(ST* ps); STDataType STTop(ST* ps); Stack.c: void STInit(ST* ps) {assert(ps);ps-a NULL;ps-top 0;ps-capacity 0;} void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-top ps-capacity 0; } void STPush(ST* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){int newCapacity ps-capacity 0 ? 4:ps-capacity * 2;STDataType* tmp (STDataType*) realloc(ps-a, sizeof(STDataType) * newCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; } void STPop(ST* ps, STDataType x) {assert(ps);//空assert(ps-top 0);--ps-top; } int STSize(ST* ps) {assert(ps);return ps-top; } bool STEmpty(ST* ps) {assert(ps);return ps-top 0; }STDataType STTop(ST* ps) {assert(ps);assert(ps-top 0);return ps-a[ps-top - 1]; }
http://www.pierceye.com/news/36546/

相关文章:

  • 网站建设的基本步骤和过程企业文化建设怎么做
  • 电子商务网站建设费用预算wordpress纯图片主题
  • 泉州网站建设哪家公司好软件外包官网
  • 网站加入我们页面网站维护界面
  • 奉化网站关键词优化费用宣传型网站建设
  • 公司 网站 源码学习网页制作学什么
  • 珠海网站建设乐云seo在线制作c2c网站内容及功能开始
  • 做资源下载网站违法吗中国建设银行网站上不去
  • 未来中森网站建设咨询网站开发费用清单
  • 襄阳微信网站建设扬州公司做网站
  • 做网站框架可用jpg图吗网站设计素材图片
  • 烟台网站制作方案网站编写教程
  • 设置网站语言网站关键词检测
  • 百度咨询电话人工台兰州网站建设与优化
  • 网站系统制作wordpress 数据库 nginx
  • 网站开发代码h5连云港网站建设开发
  • 做网站 所需资源开发软件平台
  • 企业网站的优化和推广方法网页设计岗位职责
  • 宿州专业网站建设东莞桥头网站设计
  • 免费下ppt课件的网站如何申请一个网站空间
  • 家居商城网站模板医疗器械行业发展趋势和前景
  • 湘潭做网站 活动磐石网络淘宝网官方网站
  • wordpress云主机安装教程南宁seo
  • 南通网站建设优化杭州做网站比较好的公司
  • vue做直播网站微信运营商电话
  • 在网站添加邮箱公司网页设计制作有哪些
  • 做网站文章要一篇一篇的写吗最新站群系统
  • 网站仿制教程化妆品的网站设计方案
  • 中山企业网络推广方案seo基本概念
  • 网站开发语言windows苏州网站开发公司兴田德润怎么联系