使用数组实现栈
来源:互联网 发布:电击仪编程 编辑:程序博客网 时间:2024/06/09 21:24
//使用数组来实现栈package 数组实现栈;import java.util.Arrays;interface StackADT { public void push(Object element);//压栈 public Object pop();//出栈 public boolean isEmpty();//判断是否为空栈 public int size(); public Object peek(); public String toString();}public class Stack implements StackADT { private final int DEFAULT_SIZE = 3; //默认数组大小 private int size = 0; private int capacity = 0; //top指向下一个能够添加元素的位置 private int top = 0; private Object[] array; public Stack() {//设置数组初始大小 this.capacity = this.DEFAULT_SIZE; this.array = new Object[this.capacity]; this.size = 0; } public Stack(int capacity) { //控制数组容量 this.capacity = capacity; this.array = new Object[this.capacity]; this.size = 0; } @Override public void push(Object element) { //压栈 if (this.size < this.capacity) { this.array[top] = element; this.top++; this.size++; } else { enlarge(); push(element); } } public void enlarge() { //扩容 this.capacity = this.capacity + this.DEFAULT_SIZE; Object[] newArray = new Object[this.capacity]; System.arraycopy(array, 0, newArray, 0, array.length); Arrays.fill(array, null); this.array = newArray; } @Override public Object pop() { //查看栈顶元素并将栈顶元素删除 Object element = (Object) this.array[top - 1]; this.array[top - 1] = null; this.size--; return element; } @Override public boolean isEmpty() { //判断栈是否为空 return size == 0; } @Override public int size() { //返回栈的大小 return size; } @Override public Object peek() { //查看栈顶元素但不删除 return (Object) this.array[this.top - 1]; } public static void main(String[] args) { Stack s = new Stack(); s.push(1); s.push(2); s.push(3); System.out.println(s.pop()); System.out.println(s.size()); }}
0 0
- 使用数组实现栈
- 使用数组实现栈
- java 使用数组实现栈
- 使用一个数组实现栈
- 使用数组实现栈stack功能
- 使用数组和范型来实现栈结构?
- 使用数组和底层容器实现栈
- 使用数组实现的自定义栈结构
- 使用数组实现栈(C语言)
- 使用动态数组的方式实现栈
- 数据结构示例之使用数组实现栈
- 使用数组和链表实现栈
- 使用一个数组实现两个栈
- 使用数组实现队列
- 使用数组实现队列
- 使用数组实现队列
- 使用数组实现队列
- 使用数组实现乘法
- wm8976的初始化函数、写寄存器函数和音量控制函数分析
- rror LNK2001: unresolved external symbol _cvExtractSURF
- 几个常见的DP问题及解法
- vps搭建vpn
- Logistic回归
- 使用数组实现栈
- mysql 继续努力的表操作
- 附:软件开发基础
- 最大连续子序列
- rpm 安装时提示缺少依赖库
- 虚拟机centos7安装 mariadb并修改默认密码设置远程访问
- AsyncTask用法和异步加载图片
- Microsoft SQL Server 2014 登录失败,安装不完整
- 刚开博客,开启新项目