A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小江哥 于 2018-1-8 16:00 编辑

1.简介
栈是一种有序的先进后出原则的结构, 先添加的元素在栈底, 最后添加的元素在栈顶, 在Java的学习中最早接触栈的概念应该就是Java中的方法栈了, 栈的操作针对于栈顶元素一般只有压栈和弹栈两个操作方式


其它应用场景也有很多, 比如在使用浏览器的时候的后退操作, 以及编译器的符号检查操作, 该叙述如下
做一个空栈, 读入字符直到文件结尾.如果字符是一个开放字符如左括号、左引号则将其推入到栈中.如果字符是一个封闭的符号如右括号、右引号等,则当此时栈为空时就报错.否则,将栈中的元素弹出.如果弹出的符号不是其对应的开放符号就报错,如栈存的是一个左括号,弹出时对应的是右引号.当到达文件结尾,如果栈非空则报错
2.方法实现
栈结构目前实现方法可以通过数组, ArrayList, LinkedList来实现, 其中LinkedList实现最为简单, 因为LinkedListAPI中, 有addLast()方法可以将元素添加到末尾, removeLast()方法可以移除末尾的元素
此处使用数组的方式来实现栈的操作.
2.0 准备
在实现具体的压栈和弹栈的算法之前, 先准备基本的东西
需要有一个数组来存储栈元素, 这个数组能够存储任意类型数据, 所以是Object类型


[size=12.0000pt]• 需要一个变量来表示栈空间的大小, 默认大小为10, 可以通过构造方法来设置初始化大小

• 用一个变量用来标记栈顶


在构造方法中, 对上述变量进行初始化


2.1 压栈
压栈操作就是将新的栈元素添加到数组中的末尾后面的下标中

2.2 弹栈
弹栈将当前栈元素置为null, 然后将前一个元素返回
[size=12.0000pt]




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马