四、栈的实现及其典型应用-创新互联

1、栈的定义与实现

栈的定义
栈是一种特殊的线性表,仅能在线性表的一端进行操作
栈顶(Top):允许操作的一端
栈底(Bottom):不允许操作的一端
栈的性质:后进先出(LIFO)
四、栈的实现及其典型应用
栈的一些常用操作
创建栈
销毁栈
清空栈
进栈
出栈
获取栈顶元素
获取栈的大小
栈的存储实现
顺序存储实现
四、栈的实现及其典型应用
链式存储实现
四、栈的实现及其典型应用
小结
栈是一种特殊的线性表
栈只允许在线性表的一端进行操作
栈通常有两种实现方式
顺序结构实现,附件中01_SeqStatic文件夹
链式结构实现,附件中02_ListStatic文件夹

创新互联专注于企业成都营销网站建设、网站重做改版、衡东网站定制设计、自适应品牌网站建设、HTML5建站商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为衡东等各大城市提供网站开发制作服务。

2、栈的典型应用一[字符匹配]

在C语言中有一些符号是成对匹配出现的,利用栈可以实现类似编译器括号是否匹配的能力。
算法思路:

从第一个字符开始扫描
 当遇见普通字符时忽略,当遇见左符号时压入栈中
 当遇见右符号时从栈中弹出栈顶符号
 进行匹配
  匹配成功:继续读入下一个字符
  匹配失败:立即停止,并报错
 结束:
  成功:所有字符扫描完毕,且栈为空
  失败:匹配失败或所有字符扫描完毕但栈非空

算法框架
四、栈的实现及其典型应用
小结
当需要检测成对出现但又互不相邻的事物时可以使用栈“后进先出”的特性
栈非常适合于需要“就近匹配”的场合
代码实现,附件中02_ListStatic文件夹内

2、栈的典型应用二[小型计算器的实现]

在数学计算中,人类习惯类似"9 + (3 - 1) * 5"这样的中缀表达形式,即数字在运算符号的两边,而对于计算机而言,更适合处理算式是后缀表达式,即类似"9 3 1 – 5 * +"这样的形式,因此必然有,从中缀表达式到后缀表达式的过程,并且计算机利用后缀表达式计算的过程,而这些都可以通过栈实现。
中缀表达式转换为后缀表达式的思路

遍历中缀表达式中的数字和符号
  对于数字:直接输出
  对于符号:
  左括号:进栈
  符号:与栈顶符号进行优先级比较
   栈顶符号优先级低:进栈
   栈顶符号优先级不低:将栈顶符号弹出并输出,之后进栈
  右括号:将栈顶符号弹出并输出,直到匹配左括号
 遍历结束:将栈中的所有符号弹出并输出

算法框架
四、栈的实现及其典型应用
后缀表达式计算的思路

遍历后缀表达式中的数字和符号
  对于数字:进栈
  对于符号:
   从栈中弹出右操作数
   从栈中弹出左操作数
   根据符号进行运算
   将运算结果压入栈中
 遍历结束:栈中的唯一数字为计算结果

算法框架
四、栈的实现及其典型应用
小结
中缀表达式是人习惯的表达方式
后缀表达式是计算机喜欢的表达方式
通过栈可以方便的将中缀形式变换为后缀形式
中缀表达式的计算过程类似程序编译运行的过程
代码实现,附件中02_ListStatic文件夹内

算法的实现:附件

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:四、栈的实现及其典型应用-创新互联
当前链接:http://azwzsj.com/article/cccdgc.html