栈
栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫出栈,出数据在栈顶。
栈的代码实现:
public class Stack<E> {
private Object[] data;
private int top = -1;
public boolean isFull() {
return top == data.length - 1;
}
public boolean isEmpty() {
return top == -1;
}
public Stack(int size) {
this.data = new Object[size];
}
public void push(E e) {
if (isFull()) {
throw new RuntimeException("栈已满");
}
top++;
data[top] = e;
}
public E peek() {
if (isEmpty()) {
throw new RuntimeException("栈为空,无数据");
}
return (E)data[top];
}
public E pop() {
if (isEmpty()) {
throw new RuntimeException("栈为空,无数据");
}
E e = (E)data[top];
top--;
return e;
}
public void list() {
for (int i = top; i > -1; i--) {
System.out.println(data[i]);
}
}
}
class Test {
public static void main(String[] args) {
Stack<String> stack = new Stack(3);
stack.push("a");
stack.push("b");
stack.push("c");
stack.pop();
stack.list();
}
}