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

推广 高端网站设计.我爱你 网站

推广 高端网站设计,.我爱你 网站,广告买卖网,群晖服务器可做网站服务器么文章目录 一、物理结构和逻辑结构二、栈1、什么是栈2、栈中一些基本操作的实现Stack.hStack.c栈的初始化栈的销毁入栈出栈获得栈顶元素获得栈的元素数判断栈空 三、利用栈解决问题 一、物理结构和逻辑结构 栈和队列都属于逻辑结构#xff0c;它们既可以用数组实现也可以用链表… 文章目录 一、物理结构和逻辑结构二、栈1、什么是栈2、栈中一些基本操作的实现Stack.hStack.c栈的初始化栈的销毁入栈出栈获得栈顶元素获得栈的元素数判断栈空 三、利用栈解决问题 一、物理结构和逻辑结构 栈和队列都属于逻辑结构它们既可以用数组实现也可以用链表实现。 二、栈 1、什么是栈 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出Last In First Out简称LIFO的原则。 进栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 2、栈中一些基本操作的实现 利用数组来实现栈的基本操作 代码结构设计 Stack.h: 存放链表结构及需要用到的头文件函数声明等Stack.c: 各种操作函数的具体实现 Stack.h #pragma once#include stdio.h #include stdlib.h #include assert.h #includestdbool.h //方便修改类型 typedef 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); //获得栈顶元素 STDataType STTop(ST* ps); //获得栈的元素数 int STSize(ST* ps); //判断栈空 bool STEmpty(ST* ps);Stack.c #include Stack.h栈的初始化 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 0;ps-capacity 0; }入栈 void STPush(ST* ps, STDataType x) {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);exit(-1);}ps-a tmp;ps-capacity newCapacity;}//更新入栈后内容ps-a[ps-top] x;ps-top; }出栈 void STPop(ST* ps) {assert(ps);assert(ps-top 0);ps-top--; }获得栈顶元素 top初始化时是0是栈顶元素的下一个位置所以栈顶元素下标是top-1 STDataType STTop(ST* ps) {assert(ps);assert(ps-top 0);return ps-a[ps-top - 1]; }获得栈的元素数 top从0开始栈内多一个元素它就加1所以top与元素树大小一致 int STSize(ST* ps) {assert(ps);return ps-top; }判断栈空 top等于0时栈空 bool STEmpty(ST* ps) {return ps-top 0 ; }三、利用栈解决问题 本题来自LeetCode有效的括号 有效的括号 示例1 输入s“( )” 输出true 示例2 输入s“( )[ ]{ }” 输出true 示例3 输入s“( ]” 输出false 1 s.length 104s 仅由括号 ‘( )[ ]{ }’ 组成 题目分析 对于这个题我们需要将字符串内括号的左一半与右一半进行匹配有( { [ ] })“、”( ) [ ] { }“等多种情况都是符合情况的也有像”( { ) }这种不符合情况的都需要考虑。如果是左括号则入栈如果是右括号取出栈顶元素与之匹配如果右边括号匹配时栈内已经空了则数量不匹配匹配结束后栈内不为空则数量不匹配 代码 这里我们用上面实现的栈操作来完成 bool isValid(char * s){ST st;STInit(st);char topval;while(*s){if(*s(||*s{||*s[){STPush(st,*s);}else{//如果栈内为空说明数量不匹配if(STEmpty(st)){STDestroy(st);return false;}//取出栈顶元素然后栈顶元素出栈topvalSTTop(st);STPop(st);//匹配不成功的情况if((*s)topval!()|| (*s}topval!{)|| (*s]topval![)){STDestroy(st);return false;}}s;}//匹配完后如果栈内不为空说明数量不匹配bool retSTEmpty(st);STDestroy(st);return ret; }
http://www.w-s-a.com/news/338245/

相关文章:

  • 免费wordpress网站模板重庆如何做聚政网站
  • 人才网站app建设建议系统开发生命周期法的优点表现
  • 门户网站想要微信登录怎么做湖南网站seo推广
  • 襄阳 网站建设管理系统网站
  • 重庆工程建设招标投标交易信息网广州外贸seo优化
  • 一个一起做网站东莞设计兼职网站建设
  • 杭州网站程序开发公司在哪个公司建设网站好
  • 网店的网站设计方案济南手机建站价格
  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设
  • 网站联系我们页面临平做网站
  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广