栈的数据结构是先进后出,队列的数据结构是先进先出。
数组实现固定大小栈的思想是:先创建一个固定大小的数组和一个size为0的常数,这个常数用来判断栈是否满或者空。当push时,查看size的大小是否为大于数组的长度,大于就给用户抛异常,否则就插入数组的size位置,size++。而pop的时候相反,查看size的大小是否为小于数组的长度,小于就给用户抛异常,否则就把size-1的位置给弹出,size=size-1。获取栈顶元素就直接返回数组的size-1位置的数。
数组实现固定大小队列的思想是:创建一个固定大小的数组和三个常数,size作用是计算插入队列的个数,last的作用是插入队列时使用,first的作用是弹出队列时使用。插入队列时先判断size是否为数组的长度,相等就不能插入队列,否则就size的大小加一,把数插入到数组的last位置,再判断last的值是否为数组大小减1,是的话就给last赋值为0,否则last自加1。弹出队列也要先判断size是否为0,为0则不能弹出,否则就size自减1,first位置上的值弹出,再给first赋值,若first值为数组长度减1,则赋值为0,否则first自加1。队列头部的值就为first位置上的值。
代码如下:
public class Array_To_Stack_Queue {
public static void main(String[] args) {
}
public static class ArrayStack{
private Integer[] arr;
private