实现栈 Stack
程序员文章站
2024-01-28 17:02:40
...
栈是Vector的一个子类,它实现了一个标准的后进先出的栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵守先进后出LIFO(Last In First Out)的原则
压栈:入数据在栈顶
出栈:出数据在栈顶
栈是一种数据结构
实现Java语言中的栈(Stack),采用数组来实现
import java.util.Arrays;
//顺序栈 使用数组
//(还可以用链式栈 链表实现 头插尾插都可以,头插复杂度低)
public class MyStack<T> {
public T[] elem;//数组
public int top;//表示当前可以存放数据元素的下标
public MyStack() {
this.elem = (T[])new Object[10];
}
public void push(T val) {
if(full()) {
this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
}
this.elem[this.top++] = val;
}
public boolean empty() {
return this.top == 0;
}
public boolean full() {
return this.top == this.elem.length;
}
public T pop() {
if(empty()) {
throw new RuntimeException("栈空!");
//return -1;
}
T data = this.elem[this.top-1];
this.top--;
return data;
//return this.elem[--this.top];
}
public T peek() {
if(empty()) {
throw new RuntimeException("栈空!");
//return -1;
}
return this.elem[this.top-1];
}
public int size() {
return this.top;
}
上一篇: Stack | 栈实现 —— 符号配对