数据结构-栈 JAVA语言实现
来源:互联网 发布:网络打印机通讯协议 编辑:程序博客网 时间:2024/05/19 07:26
数据结构-栈 JAVA语言实现
栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。
目录
- 数据结构-栈 JAVA语言实现
- 目录
- 基于数组实现栈
- 基于链表实现栈
- Java Stack 类
基于数组实现栈
public class ArrayStack { private int[] array; //栈顶位置 private int top = -1; // 容量 private int capacity; public ArrayStack(int[] array, int capacity) { this.array = array; top = array.length - 1; this.capacity = capacity; } /** * 是否为空 * * @return */ private boolean isEmpty() { if (top == -1) { return true; } else { return false; } } /** * 是否栈满 * * @return */ private boolean isFull() { if (top == capacity - 1) { return true; } else { return false; } } /** * 将data插入栈 * * @param data 插入数据 */ private void push(int data) { if (isFull()) { return; } else { array[++top] = data; } } /** * 出栈 * * @return 如果为空,返回0 否则返回出栈的data */ private int pop() { if (isEmpty()) { return 0; } else { return array[top--]; } }}
局限性:栈的空间必须先申明
基于链表实现栈
public class ListStack { private ListNode headNode; public ListStack(){ this.headNode = new ListNode(1,null); } /** * 入栈 * @param data */ private void push(int data){ if (headNode == null){ headNode.setData(data); }else { ListNode newNode = new ListNode(data,null); newNode.setNext(headNode); headNode = newNode; } } /** * 出栈 * @return 出栈的数据 */ public int pop(){ int data = headNode.getData(); headNode = headNode.getNext(); return data; } public boolean isEmpty(){ return headNode == null; }}
Java Stack 类
java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用!
除了由Vector定义的所有方法,自己也定义了一些方法:
- boolean empty()
测试堆栈是否为空。 - Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。 - Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。 - Object push(Object element)
把项压入堆栈顶部。 - int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。
实例代码:
public class StackDemo { private void showpush(Stack st, int a) { st.push(new Integer(a)); System.out.println("push(" + a + ")"); System.out.println("stack: " + st); } private void showpop(Stack st) { System.out.print("pop -> "); Integer a = (Integer) st.pop(); System.out.println(a); System.out.println("stack: " + st); } public static void main(String args[]) { StackDemo demo = new StackDemo(); Stack st = new Stack(); System.out.println("stack: " + st); demo.showpush(st, 44); demo.showpush(st, 22); demo.showpush(st, 33); demo.showpop(st); demo.showpop(st); demo.showpop(st); try { demo.showpop(st); } catch (EmptyStackException e) { System.out.println("empty stack"); } }}
运行结果:
阅读全文
0 0
- 数据结构-栈 JAVA语言实现
- 数据结构-链表 JAVA语言实现
- 数据结构-队列 JAVA语言实现
- 数据结构java语言实现之栈及其应用
- 数据结构C语言实现栈
- 数据结构.栈(C语言实现)
- 数据结构---栈C语言实现
- 数据结构栈C语言实现
- 通用数据结构树—Java语言实现
- 通用数据结构树—Java语言实现
- 数据结构Java语言实现之链表
- 数据结构-二叉树 JAVA语言实现
- java 实现栈数据结构
- java实现栈数据结构
- Java实现栈数据结构
- 数据结构-Java实现栈
- Java实现数据结构--栈
- (Java)单链表Java语言顺序结构实现(数据结构三)
- Mongodb命令行导入导出文档
- 开发小技巧之进入Activity之后获取控件高度
- 二叉树面试题
- MQ整理—基本介绍
- spring注入properties文件的can not resolve placeholder问题
- 数据结构-栈 JAVA语言实现
- Android的责任链模式
- POI设置单元格内容下拉框选择和单元格提示功能
- JSP和Servlet有哪些相同点和不同点,它们的联系是什么?
- hive 实践练习1 建表 查询
- java反射getDeclaredField和getField的区别
- java生成zip包方法
- [PAT甲级]1010. Radix (25)(求另一个数的基数)
- 跌倒