栈
来源:互联网 发布: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