(java)数组实现栈
来源:互联网 发布:java 办公系统 编辑:程序博客网 时间:2024/06/05 14:25
//使用数组来实现栈
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());
}
}
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());
}
}
1 0
- (java)数组实现栈
- Java栈(数组实现)
- 数组实现栈(Java)
- java数组实现栈
- java数组实现栈
- java 数组实现栈
- Java数组实现栈
- 栈的数组实现(Java)
- java自定义栈(数组实现)
- java 用数组实现栈
- java实现栈(数组方式)
- Java用数组实现栈
- 数组实现动态栈,java
- Java数组实现自定义栈
- java用数组实现栈
- java自定义栈(数组实现)
- Java - - 数组实现栈基本功能
- 栈--数组存储--Java实现
- cocos2dx-js 实现自定义富文本
- 1031: [JSOI2007]字符加密Cipher
- HDU 5772 String problem(最大权闭合子图)
- Java中如何在无参构造方法中调用有参构造方法
- Android动态加载学习总结(二):资源访问
- (java)数组实现栈
- EventBus源码阅读(15)-HandlerPoster
- 程序猿的生活
- 绝对居中
- fcgi库两种编程风格
- Android控件ListView获取item中EditText值
- 匈牙利算法
- 深入map和set
- 快速原型工具 mockups和墨刀还有axure