• 关于栈

      栈(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);
        }
    
    }
  • 相关阅读:
    带修改离线主席树 + 树状数组 ZOJ
    树上主席树 + LCA SPOJ
    基础静态主席树 POJ
    数列分块入门1-9 LibreOJ
    Some about me
    [Java]Thinking in Java 练习2.12
    [Java]Thinking in Java 练习2.10
    [Java]Java中的自动包装
    [Java]Thinking in Java 练习2.2
    [杂记]CodeBlocks下载、安装及设置
  • 原文地址:https://www.cnblogs.com/mutong1228/p/8992533.html
Copyright © 2020-2023  润新知