愤怒中的小草

博客园 首页 新随笔 联系 订阅 管理

关于栈

  栈(Stack)是限定只能在一段进行插入和删除操作的线性表。

  进行插入和删除操作的一端称为“栈顶”(top),另一端称为“栈底”(bottom)。

  栈的插入操作称为“入栈”(push),栈的删除 操作称为“出栈”(pop)。

  栈具有后进先出(LIFO),先进后出(FILO)的特性。
Java Stack 类 

  栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

  堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

  除了由Vector定义的所有方法,自己也定义了一些方法:

package com.lsw.datastruct;


public class StackTest {
    static class MyStack{
        int top;
        //底层实现是一个数组
        int stack[];
        
        public MyStack(){
            top = -1;
            stack = new int[10];
        }
        public MyStack(int num){
            top = -1;  //初始化的时候无任何数据
            stack = new int[num];
        }
        //出栈
        public int pop(){
            return stack[top--];
        }
        //入栈
        public void push(int value){
            stack[++top] = value;
        }
        
        Boolean myIsEmpty(){
            if(top == -1)
                return true;
            else
                return false;
        }
        //取栈顶元素
        public int mypeek(){
            int peek = stack[top];
            return peek;
        }
        
        public Boolean isFull(){
            return top == stack.length - 1;
        }
        int mysize(){
            return top + 1;
        }
    }
    
    public static void main(String[] args){
        MyStack mystack = new MyStack(5);
        mystack.push(1);
        mystack.push(222);
        mystack.push(31);
        mystack.push(41);
        mystack.push(4);
        System.out.println(mystack.isFull());
        System.out.println(mystack.myIsEmpty());
        System.out.println(mystack.mysize() + "   " +mystack.top);
        for(int i=mystack.top;i>=0;i--)
        {
            int value=mystack.mypeek();
            mystack.pop();
            System.out.println(value);
        }
        System.out.println(mystack.top);
    }

}

 

posted on 2018-05-04 21:11  愤怒中的小草  阅读(154)  评论(0编辑  收藏  举报