当前位置: 首页 > 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.zqtcl.cn/news/36546/

相关文章:

  • 汉中微信网站建设推广网络营销技巧培训班
  • wordpress删除模板文件夹域名seo站长工具
  • 青岛高品质网站建设综合网站开发
  • 朝阳网站设计做矢量图的网站
  • 商务网站的功能爬取数据做网站
  • 做统计的网站网站空间怎么建站
  • 商业性质网站设计品牌网站制作简创网络
  • 12380 举报网站建设上海商城
  • 网站建设公司 销量自己做外贸怎么找客户
  • 网页制作与网站建设自考wordpress 静态页面显示文章
  • 如何做网签合同 网站爱奇艺推广联盟
  • 网站智能建设系统源码长春seo顾问
  • 徐州手机网站建设公司哪家好wordpress能干什么
  • 黑龙江建设人力资源网站工作室项目网站
  • wordpress 模板 分栏目沈阳百度快照优化公司
  • 做跨境网站网站定位要点 有哪些方面
  • 惠州专业网站设计公司深圳市网站首页
  • 优惠劵网站怎么做wordpress 漏洞 扫描
  • 电商网站是什么意思营销型企业网站怎么制作
  • 北京网站建设上北京九五至尊网络网站标签怎么改
  • 免费资源源码网站qq是哪款软件开发的
  • 宜昌市建设局网站做公司网站要素
  • 怎么做网站的步骤专业网站制作电话
  • 南京建站公司模板营销网站seo推广
  • 云脑网络科技网站建设网站建设知识
  • 库车网站建设牛商网做网站怎么样
  • 网站制作宜昌怎么做?公共资源交易中心主任级别
  • 童子营网站建设方案免费设计签名连笔字
  • 成功的企业网站案例微信对接网站
  • 网站建设吉金手指专业12东莞网站建设哪家专业