栈的实现

栈(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 }

 栈初始化

posted @ 2013-05-06 13:44  bing2011  阅读(437)  评论(0编辑  收藏  举报