java 数据结构与算法—栈详解编程语言

一、栈的定义

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

二、栈的实现

 

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()); 
        } 
    } 
}

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16294.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论