0
点赞
收藏
分享

微信扫一扫

数据结构(四)-栈

静悠 2022-03-30 阅读 45
package demo02;

/**
 * Created with IntelliJ IDEA.
 * 栈:后进先出
 * @Author: QC
 * @Date: 2022/03/29/22:09
 * @Description:
 */
public class MyStack {
//    栈的底层使用数组来存储数据
    int[] elements;

    public MyStack(){
        elements=new int[0];
    }
//    压入元素
    public void push(int element) {
//        创建一个新的数组
        int[] newArr = new int[elements.length+1];
        for (int i = 0; i < elements.length; i++) {
            newArr[i] = elements[i];
        }
        newArr[elements.length]=element;
        elements=newArr;
    }
//    取出栈顶元素
    public int pop(){
//        栈为空
        if(elements.length==0){
            throw new RuntimeException("stack is empty");
        }
//        取出数组的最后一个元素
        int element=elements[elements.length-1];
//        创建一个新的数组
        int[] newArr=new int[elements.length-1];
//
        for(int i=0;i<elements.length-1;i++){
            newArr[i]=elements[i];
        }
        elements=newArr;
        return element;
    }
//    查看栈顶元素
    public int pick(){
        return elements[elements.length-1];
    }
//    判断栈是否为空
    public boolean isEmpty(){
        //        栈为空
        if(elements.length==0){
            throw new RuntimeException("stack is empty");
        }
        return elements.length==0;
    }


}

测试

package demo02;

import demo02.MyStack;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: QC
 * @Date: 2022/03/29/22:19
 * @Description:
 */
public class stackTest {
    public static void main(String[] args) {
//        创建一个栈
        MyStack ms= new MyStack();
//        压入数据
        ms.push(8);
        ms.push(5);
        ms.push(7);
        System.out.println(ms.pop());
        System.out.println(ms.pop());
//        System.out.println(ms.pop());
//        System.out.println(ms.pick());
        System.out.println(ms.isEmpty());
    }
}


测试结果

在这里插入图片描述

举报

相关推荐

0 条评论