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

汕头网站建设工作安阳市建设工程领域网站

汕头网站建设工作,安阳市建设工程领域网站,中企动力企业邮箱app,网站免费制作平台数据结构《栈》 1、栈的概念及结构2、栈的实现3、练习: 1、栈的概念及结构 栈#xff1a;一种特殊的线性表#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO… 数据结构《栈》 1、栈的概念及结构2、栈的实现3、练习: 1、栈的概念及结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 2、栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的 代价比较小。 进栈、出栈展示 实现栈最好声明与定义分开成俩个文件来处理头文件,h介绍接口实现文件.c(实现接口功能) 1、头文件.h #includestdio.h #includeassert.h #includestdbool.h #includestdlib.htypedef int type; #define N 10; //静态栈不常用所以我们要实现的是动态栈 typedef struct Stack {type arr[N];int top;//栈顶 }Stack;//动态栈 typedef struct Stack {type* a;int top;int capacity; }sl;// 初始化栈 void Slint(sl* p); // 入栈 void pushpop(sl* p, type x); // 出栈 void STpop(sl* p); // 获取栈顶元素 type STTop(sl* p); // 获取栈中有效元素个数 int STsize(sl* p); // 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool empty(sl* p); // 销毁栈 void destroy(sl* p); 实现文件.c void Slint(sl* p) {assert(p);p-a NULL;p-capacity 0;p-top 0; }void pushpop(sl* p, type x) {assert(p);if (p-top p-capacity){int newcapacity p-capacity 0 ? sizeof(type) : 2 * p-capacity;type* new (type*)realloc(p-a, sizeof(type) * newcapacity);if (new NULL){perror(realloc fail);return;}p-a new;p-capacity newcapacity;}p-a[p-top] x;p-top;}void STpop(sl* p) {assert(p);p-top--; }type STTop(sl* p) {assert(p);assert(p-top 0);return p-a[p-top - 1]; }bool empty(sl* p) {assert(p);return p-top 0; }void destroy(sl* p) {free(p-a);p-a NULL;p-capacity 0;p-top 0; }int STsize(sl* p) {assert(p);return p-top; }3、练习: 括号匹配问题 第一步-实现一个栈在用栈的后进先出特性来匹配括号。 情况1如果为‘(’、‘[’、‘{’。左括号入栈 情况2如果为‘’‘}’‘]’右括号与栈顶匹配 //实现一个栈 typedef char type;typedef struct Stack {type* a;int top;int capacity; }sl;void Slint(sl* p);void destroy(sl* p);void pushpop(sl* p, type x);void STpop(sl* p);type STTop(sl* p);bool empty(sl* p);int STsize(sl* p);void Slint(sl* p) {assert(p);p-a NULL;p-capacity 0;p-top 0; }void pushpop(sl* p, type x) {assert(p);if (p-top p-capacity){int newcapacity p-capacity 0 ? sizeof(type) : 2 * p-capacity;type* new (type*)realloc(p-a, sizeof(type) * newcapacity);if (new NULL){perror(realloc fail);return;}p-a new;p-capacity newcapacity;}p-a[p-top] x;p-top;}void STpop(sl* p) {assert(p);p-top--; }type STTop(sl* p) {assert(p);assert(p-top 0);return p-a[p-top - 1]; }bool empty(sl* p) {assert(p);return p-top 0; }void destroy(sl* p) {free(p-a);p-a NULL;p-capacity 0;p-top 0; }int STsize(sl* p) {assert(p);return p-top; } //匹配括号 bool isValid(char* s) {sl s3;Slint(s3);while (*s){if (*s ( || *s { || *s [)//情况1{pushpop(s3, *s);}else//情况2{if(empty(s3)){return false;}char top STTop(s3);STpop(s3);if ((top ( *s ! )) || (top [ *s ! ]) || (top { *s ! })){return false;}}s;}bool retempty(s3);//判断栈有没有数据destroy(s3);return ret ;} }
http://www.tj-hxxt.cn/news/224859.html

相关文章:

  • 广州建设工程安全质量监督网站郑州建网站价格
  • 网站链接提交网站备案名字填写
  • 免费网站制作网站源码六安网站建设网络服务
  • 做网站的职员称呼什么网站备案空间备案
  • 营销型网站建站要素注册公司场地有什么要求
  • 龙岗网站建设培训茂港网站开发公司
  • 做网站的怎么挣钱、如何自己制作h5页面
  • 爱网站大全电商网站设计的流程
  • 试用网站如何做免费免备案域名
  • 关于网站开发的文档网站qq一键登录
  • 常德网站建设全域云炒股软件排名
  • 给网站做外链要注意哪些自学服装设计下载
  • 免费建网站平台教枣庄三合一网站开发公司
  • 网站功能板块网络营销的概念与含义
  • 排名好的郑州网站建设如何虚拟一个公司网站
  • 广州做淘宝的化妆品网站好个人能进行网站开发
  • 手机网站设计技巧手机如何建设网站首页
  • 国外做免费网站的建设网站需要租服务器吗
  • 说说对网站推广的看法和想法一个网站怎么做2个服务器
  • 对做网站公司的疑问网络营销方法有哪些举例
  • 导购网站怎么做视频教学如何帮公司做网站
  • wordpress防站教程chrome浏览器官网入口
  • 外贸网站 推广房山网站建设优化seo
  • 做橡胶应该看什么网站沧州市网站优化排名
  • 企业网站设计苏州郑州装修公司排名
  • 电子商务的网站的建设内容设计分公司加盟
  • 西安设计网站的公司南京 网站制作公司哪家好
  • 高职两学一做专题网站网站建设与管理 试卷
  • 医院网站建设要素中国建设培训网站查询系统
  • 怎样免费建立自己的网站商业型网站