数据结构-栈

来源:互联网 发布:古生物学与地层学知乎 编辑:程序博客网 时间:2024/06/16 11:07

  栈只允许访问一个数据项,即最后插入的数据项。移除这个数据项后才能访问倒数第二个插入 的数据项,依此类推。这种机制在不少编程环境中都很有用。本博文中将看到如何利用栈来检验源程 序中的小括号、中括号和大括号是否匹配的问题。本章的最后会讲到栈在解析算术表达式时起到的 极为重要的作用,比如解析3* (4+5)。

栈也是那些应用了相当复杂的数据结构算法的便利工具。比如之后博文中提到的“二叉树”中,用栈来 辅助遍历树的节点;在博文“图”中,利用栈来辅助查找图的顶点(一种可以用来解决迷宫问题 的技术)。

大部分微处理器运用基于栈的体系结构。当调用一个方法时,把它的返回地址和参数压入栈, 当方法结束返回时,那些数据出栈。栈操作就嵌入在微处理器中。

一些比较老的便携式计算器也用基于栈的体系结构。它们不是输入带括号的算术表达式,而是 把中间结果先存入栈中。本章最后一节讨论解析算术表达式问题时将更详细地讲述这种方法。


栈的代码如下:



分隔符匹配程序从字符串中不断地读取字符,每次读取一个字符 t 若发现它是左分隔符,将它压入找中。当从输入中读到一个右分隔符时,弹出栈顶的左分隔符,并且査看它是否和右分隔符相匹配。如果它们不匹配(比如,一个左大括号和一个右小括号),则程序报错。如果栈中没有左分隔符和右分隔符匹配,或者一直存在着没有被匹配的分隔符,程序也报错.分隔符没有被匹配,表现为把所有的字符读入之后,栈中仍留有分隔符。


原创粉丝点击