一.简介
栈是一种仅在表尾进行插入和删除操作的线性表(FILO)。操作的这一端被称为栈顶,另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
二.实现
package com.vincent;
import java.util.Arrays;
import java.util.NoSuchElementException;
public class ArrayStack<T> {
private int size;
private T[] items;
public void push(T item){
if(items == null){
items = (T[])new Object[16];
}
if(size == items.length){
items = Arrays.copyOf(items,items.length << 1);
}
items[size++] = item;
}
public T pop(){
if(size == 0){
throw new NoSuchElementException();
}
T item = items[--size];
items[size] = null;
return item;
}
public T peekLast(){
return items[size-1];
}
public T peekFirst(){
if(size == 0){
throw new NoSuchElementException();
}
return items[0];
}
@Override
public String toString() {
return Arrays.toString(items);
}
}
package com.vincent;
public class Main {
public static void main(String[] args) throws Exception{
ArrayStack<Integer> stack = new ArrayStack<>();
for(int i=0;i<16;i++){
stack.push(i);
}
System.out.println(stack);
System.out.println(stack.pop());
System.out.println(stack);
}
}
效果:
三.总结
1.实现数据的反向输出
2.函数/方法调用都是利用栈结构
3.递归调用保存相关数据信息