栈(stack)是简单的数据结构,但在计算机中使用广泛。它是有序的元素集合。栈最显著的特征是LIFO (Last In, First Out, 后进先出)。当我们往箱子里存放一叠书时,先存放的书在箱子下面,我们必须将后存放的书取出来,才能看到和拿出早先存放的书。
实现代码如下(基于数组):
1 package DataStructure.Stack_Queue.Stack; 2 3 public class Stack { 4 private int maxSize; //size of stack array 5 private long[] stackArray;//item container 6 private int top;// stack top pointer 7 8 public Stack(int size){ 9 maxSize = size; 10 stackArray = new long[maxSize]; 11 top = -1; //初始化时 栈顶指针 指向-1 12 } 13 14 /** 15 * 16 * @Description: 压栈操作 17 * @param value 18 * @return void 19 * @author: zhaob 20 * @date: 2013-4-26 上午05:21:22 21 */ 22 public void push(long value) { 23 top++;//栈顶指针 加1 24 stackArray[top] = value; //将栈顶指针指向的item赋值为value 25 } 26 27 /** 28 * 29 * @Description: 出栈操作 30 * @return void 31 * @author: zhaob 32 * @date: 2013-4-26 上午05:23:46 33 */ 34 public long pop() { 35 long returnVlaue = stackArray[top];//将栈顶指针所指的item的值取出 36 top--;//栈顶指针减一 37 return returnVlaue; 38 } 39 40 /** 41 * 42 * @Description:查看栈顶指针 43 * @return 44 * @return long 45 * @author: zhaob 46 * @date: 2013-4-26 上午05:26:11 47 */ 48 public long peek() { 49 return this.stackArray[this.top]; 50 } 51 52 /** 53 * @Description:判断当前栈是否为空 如果为空 返回true 如果不为空 返回false 54 * @return boolean 55 * @author: zhaob 56 * @date: 2013-4-26 上午05:27:04 57 */ 58 public boolean isEmpty() { 59 return (this.top == -1); 60 } 61 62 /** 63 * @Description:判断当前栈是否为满 如果满返回true如果不满 返回false 64 * @return 65 * @return boolean 66 * @author: zhaob 67 * @date: 2013-4-26 上午05:29:00 68 */ 69 public boolean isFull(){ 70 return (this.top == this.maxSize-1); 71 } 72 73 74 }
栈初始化