使用数组实现固定大小的栈,很简单,水一水。
入栈规则:使用一个指针指向栈内元素的上一个位置,如果入栈,只需要在指针位置放入元素即可,然后指针再指向上一个位置,如果超出数组长度,则报错
出栈规则:返回指针指向位置的下一个元素,如果小于0,则报错
代码:
/* * 使用数组实现一个栈 */ public class UsingArrayRealizeStack { public static int[] stack = new int[5]; public static int size = 0; // 栈中已放入元素的个数 public static int index = 0;// 栈的指针 // 入栈 public void put(int value){ if(index >= stack.length){ throw new ArrayIndexOutOfBoundsException("the size more than bounds"); } stack[index++] = value; size++; } // 出栈 public int poll(){ if(index <= 0){ throw new IllegalArgumentException("the size less than 0"); } size--; return stack[--index]; } // 栈顶元素 public Integer peek(){ if(size == 0){ return null; } return stack[size]; } public static void main(String[] args) { UsingArrayRealizeStack stack = new UsingArrayRealizeStack(); stack.put(1); System.out.println(stack.poll());// 1 stack.put(1); stack.put(2); stack.put(3); stack.put(4); stack.put(5); // stack.put(6); System.out.println(stack.poll());// 5 System.out.println(stack.poll());// 4 System.out.println(stack.poll());// 3 System.out.println(stack.poll());// 2 System.out.println(stack.poll());// 1 } }
测试结果: