数据结构——栈(Stacks)
2014-12-26 23:32
120 查看
栈遵循LIFO ( last in first out) 即后入先出原则
栈结构类似于叠盘子 后叠上去的要先拿走 才能拿到下面的盘子
因此stack是一种访问受限的线性存储结构
用单向链表的结构来存储
stack类
栈的两个常见应用:
&&Run-time Stack 运行时间栈
顺序执行活动,运行栈顶的活动,运行完毕弹出。
&&RPN or Postfix Notation
将中缀表达式转化为后缀表达式压入栈中,顺序弹出进行运算。
如:a*b+c -> ab*c+
a*(b+c) -> abc+*
a-(b-(c-d)) -> abcd---
压入栈中时分为 数字栈 和 符号栈
符号栈:进栈与栈顶元素比较优先级。
同级则先弹出栈顶元素再新元素进栈,
优先级低则先弹出栈顶元素再与新的栈顶元素比较,
优先级高则直接入栈。
‘(’ 直接入栈,碰到 ‘)’ 则将直至 ‘(’ 的符号全部弹出。
举例:
栈结构类似于叠盘子 后叠上去的要先拿走 才能拿到下面的盘子
因此stack是一种访问受限的线性存储结构
用单向链表的结构来存储
stack类
class stack { stack(); bool empty() const; void pop(); //移除栈顶元素 void push()(const T&item);//增加元素至栈顶 int size() const; T &top() const;//返回栈顶元素 }
栈的两个常见应用:
&&Run-time Stack 运行时间栈
顺序执行活动,运行栈顶的活动,运行完毕弹出。
&&RPN or Postfix Notation
将中缀表达式转化为后缀表达式压入栈中,顺序弹出进行运算。
如:a*b+c -> ab*c+
a*(b+c) -> abc+*
a-(b-(c-d)) -> abcd---
压入栈中时分为 数字栈 和 符号栈
符号栈:进栈与栈顶元素比较优先级。
同级则先弹出栈顶元素再新元素进栈,
优先级低则先弹出栈顶元素再与新的栈顶元素比较,
优先级高则直接入栈。
‘(’ 直接入栈,碰到 ‘)’ 则将直至 ‘(’ 的符号全部弹出。
举例:
相关文章推荐
- 数据结构与算法总论
- COM+(三层结构)应用中数据访问的技术(E)
- MySQL数据目录结构大全
- 数据结构大学教程之数据结构及其基本概念(2)
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- 经典数据结构题目
- 数据结构
- 数据结构实验2
- 数据结构大学教程之数据结构及其基本概念(1)
- Decal SDL-Delphi的范型类库-通用数据结构与算法类库(一)
- c# 数据结构
- 如何删除某个用户的所有表的数据而保留表结构?
- 获取Oracle表结构时,两种OleDb驱动得到的列数据类型“DATA_TYPE”值的类型不同
- MySQL数据目录结构
- 根据基本表结构及其数据生成 INSERT ... 的 SQL
- 树型结构数据在数据库基本表中的存储及维护
- 数据结构中关键路径算法的实现与应用
- MySQL数据目录结构
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- SQL Server数据对象结构的动态建立与访问