欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 数据结构与算法---栈

程序员文章站 2022-04-06 13:12:42
"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。 ......

一、栈的定义

栈是一种只能在一端进行插入和删除操作的特殊线性表;它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来);栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;插入一般称为进栈(PUSH),删除则称为退栈(POP)。

                                                                  java 数据结构与算法---栈

     

二、栈的实现

 

package com.jalja.org.arith;


public class MyStack<E>{
    private Object [] arr;//存储
    private int index;//栈元素实际入栈索引
    private int maxSize;//栈的最大空间
    
    private MyStack(int maxSize) {
        this.arr=new Object[maxSize];
        this.index=0;
        this.maxSize=maxSize;
    }
    //入栈
    public void push(E e) {
        if(isFull()) {
            throw new RuntimeException("myStack  is full ");
        }
        arr[index++]=e;
    }
    //出栈
    public E pop() {
        if(isNull()) {
            throw new RuntimeException("myStack is null ");
        }
        E e=(E)arr[--index];
        return e;
    }
    //访问栈顶元素
    public E peek() {
        return (E)arr[index-1];    
    }
    //栈是否为空
    public boolean isNull() {
        return this.index <= 0;
    }
    //栈是否满了
    public boolean isFull() {
        return index>=maxSize;
    }
    public static void main(String[] args) {
        MyStack<String> myStack=new MyStack(3);
        myStack.push("A0");
        myStack.push("A1");
        myStack.push("A2");
        System.out.println(myStack.peek());
        while(!myStack.isNull()) {
            System.out.println(myStack.pop());
        }
    }
}