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

建管家企业网站天元建设集团有限公司青岛分公司张德平不干了

建管家企业网站,天元建设集团有限公司青岛分公司张德平不干了,亚马逊网站网址,湘潭简单的网站建设公司栈与队列是数据结构中重要的结构#xff0c; 可以用于解决一些题目 模拟实现时可以增加对于这些结构的理解#xff0c;也可以巩固我们的语言水平#xff0c;解决某些题目也会有很好的效果 话不多说 目录 栈的实现结构体的定义#xff1a;初始化栈:压栈#xff1a;出栈 可以用于解决一些题目 模拟实现时可以增加对于这些结构的理解也可以巩固我们的语言水平解决某些题目也会有很好的效果 话不多说 目录 栈的实现结构体的定义初始化栈:压栈出栈获取栈顶元素获取栈中有效元素个数 :检测栈是否为空:销毁栈 : 栈模拟源代码队列的实现 栈的实现 先来看一下栈的定义: 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 栈的实现一般可以使用数组或者链表实现 相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 结构体的定义 // 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack;初始化栈: 栈在初始化时 我们可以定义top为栈顶元素的下一个故这样我们就可以将top定义为0若将top定义为栈顶元素则需要将top定义为-1 这里我在仔细的讲解一下 当top为0时我们不能将top视作栈顶元素因为如果压栈压入的元素就会在top 0的位置压入压入的top仍为0我们将判断不了top 0时是否有元素 则若top 0我们应当定义栈顶元素的下一个这样我们赋值时ps-a[top] data;top; 同理若是初始化top -1则赋值:top;ps-a[top] data; // 初始化栈 void StackInit(Stack* ps) {ps-a NULL;ps-capacity 0;ps-top 0; }压栈 因为只有压栈时会增加元素个数故我们不需要封装一个函数用来创造新节点 void StackPush(Stack* ps, STDataType data) {assert(ps);//检查容量if (ps-capacity ps-top){int newcapacity (ps-capacity 0 ? 4 : 2 * ps-capacity);STDataType* tmp (STDataType*)realloc(ps-a, sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}ps-a tmp;ps-capacity newcapacity;}ps-a[ps-top] data;ps-top; } 出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top);ps-top--; }获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);return ps-a[ps-top - 1]; }获取栈中有效元素个数 : int StackSize(Stack* ps) {assert(ps);return ps-top; }检测栈是否为空: 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }销毁栈 : void StackDestroy(Stack* ps) {free(ps-a);ps-a NULL;ps-capacity 0;ps-top 0; }栈模拟源代码 stack.c #define _CRT_SECURE_NO_WARNINGS 1#include stack.h// 初始化栈 void StackInit(Stack* ps) {ps-a NULL;ps-capacity 0;ps-top 0; }void StackPush(Stack* ps, STDataType data) {assert(ps);//检查容量if (ps-capacity ps-top){int newcapacity (ps-capacity 0 ? 4 : 2 * ps-capacity);STDataType* tmp (STDataType*)realloc(ps-a, sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}ps-a tmp;ps-capacity newcapacity;}ps-a[ps-top] data;ps-top; }void StackPop(Stack* ps) {assert(ps);assert(ps-top);ps-top--; }STDataType StackTop(Stack* ps) {assert(ps);return ps-a[ps-top - 1]; }int StackSize(Stack* ps) {assert(ps);return ps-top; }bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }void StackDestroy(Stack* ps) {free(ps-a);ps-a NULL;ps-capacity 0;ps-top 0; }stack.h #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h // 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack;// 初始化栈 void StackInit(Stack* ps); // 入栈 void StackPush(Stack* ps, STDataType data); // 出栈 void StackPop(Stack* ps); // 获取栈顶元素 STDataType StackTop(Stack* ps); // 获取栈中有效元素个数 int StackSize(Stack* ps); // 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool StackEmpty(Stack* ps); // 销毁栈 void StackDestroy(Stack* ps);队列的实现 队列的定义 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头 持续更新中… 敬请期待
http://www.hkea.cn/news/14409597/

相关文章:

  • 网站的引导页面是什么意思建设银行明细网站能查多久
  • 住房和城乡建设主管部门网站免费照片模板制作
  • php网站忘记后台密码WordPress网页自动重定向
  • 做网站的技术员跨境电商服务
  • 网站建设营销怎么做网络营销方式和手段
  • 郑州定制网站推广工具手机装修设计软件app
  • 专业网站建设优势用Off做网站
  • 做周边的网站网络公司要求做网站工商网监
  • 做电影下载网站京津冀协同发展的问题
  • 微信公众号可以做微网站wordpress连不上
  • 郑州专业制作网站费用网站的前端用什么语言
  • 电子商务网站建设收益举例使用html5做语音标注网站
  • 自学建网站做网站优化wordpress的别名获得页面的别名
  • 怀化住建部网站网站制作案例图片
  • 一个网站开发成本wordpress导入docx
  • wordpress网站自适应做装修公司网站
  • 百度网站收录删除wordpress外链转内链代码
  • 在阿里云上建立网站的步骤网站建设谈业务要知道什么
  • 开发网站如何选需要注意什么问题北京企业建设网站公司简介
  • 哪家能建设网站如何用织梦建网站
  • 开发软件大全如何做网站公司名seo
  • 上海高端网站搭建wordpress c2c
  • 做影视网站怎么样不犯法什么专业会做网站
  • 现在的网站开发方式房地产集团网站建设方案
  • 网站区域名怎么注册阿里云万网域名购买
  • 营销型网站更受用户欢迎的原因是虚拟货币网站开发
  • 网站建设公司专业的建站优化公司网站建设信息服务费计入什么科目
  • 保险业网站建设开发网站的基本流程五个阶段
  • 高端网站建设内容it运维管理
  • 网站怎么投放广告优秀学习网站