来源:互联网 发布:linux 命令 竖线 编辑:程序博客网 时间:2024/06/05 02:44

  栈(堆栈)是一种先进后出的线性数据结构,一般使用一段连续的空间进行存储,通常预先分配一个长度,可以简单地使用数组去实现。

       栈的适用场景:

        (1)逆序输出

        (2)语法检查,符号成对出现

         (3)数制转换

     栈的 java 实现:

package com.threetop.www;import java.util.Arrays;/*** *  * @author wjgs * */public class Stack {            //定义栈的大小      private int size=10;      private int []array;            public Stack()      {           }      //构造函数      public Stack(int init)      {      if(init<0)      {      init=10;      }      array=new int[init];           }                  /**       * 入栈       * @param item 入栈元素的值       */      public void push(int item)      {      if(size==array.length)      {      array=Arrays.copyOf(array, size*2);      }      //将元素放入数组      array[size++]=item;      }            /***       * 获取栈顶的元素但不出栈       * @param args       */      public int peek()      {      if(size==0)      {      throw new IndexOutOfBoundsException("栈已经为空");      }      return array[size-1];      }            /***       * 出栈同时获取栈顶的元素       * @param args       */      public int pop()      {      int item=peek();      size--; //直接是元素减少1个      return item;      }              /***         * 查看栈是否已满         * @param args         */      public boolean isFull()      {            return size==array.length;      }            /***       * 查看栈是否为空       * @param args       */      public boolean isEmpty()      {      return size==0;        }              /***      * 获得栈的大小      * @param args      */      public int size()      {      return size;      }      public static void main(String[] args) {// TODO Auto-generated method stub         //测试栈的实现过程         Stack stack=new Stack(10); //初始数组的长度为1         stack.push(1);         stack.push(2);        System.out.println(stack.size()); //输出栈的长度 栈的元素个数为2,数组长度为2         stack.push(3);        System.out.println(stack.size()); //输出栈的长度 栈的元素个数为3,数组长度为4        System.out.println(stack.peek()); //获取栈顶的元素3,但是没有出栈        System.out.println(stack.size()); //栈的元素个数为3        System.out.println(stack.pop()); //获取栈顶的元素3,且出栈        System.out.println(stack.pop()); //获取栈顶的元素2,且出栈        System.out.println(stack.size()); //获取栈顶的大小        System.out.println(stack.isFull());         System.out.println(stack.isEmpty());                }}


    

0 1
原创粉丝点击