Java 数据结构第八课——栈和队列

在这里插入图片描述
方法签名:方法的名称+形参列表
重载:方法名称相同,形参列表不同<构造方法允许重载>
对象的生命周期:new分配空间|属性初始化阶段|完整对象存活|对象被标记为垃圾,但未回收时期|
静态方法中无法访问普通属性和调用普通方法,在普通方法中可以访问静态属性和调用静态方法

栈<偏向顺序表> 队列
栈:在哪头插,在哪头删<先进后出,后进先出>
队列: 在一头插/另一头删<先进先出>
双端队列:可以在任意两头进出

实现栈:
插入数据<尾插> void push(int val)
删除数据<尾删> void pop()
查看栈顶数据[top-1] int top()
返回栈内数据元素个数[top] int size()
判断栈是否为空[top=0] boolean isEmpty()

import java.util.Arrays;
public class Stack{
    private int[] array;
    private int top;
    public Stack(int defaultCapacity){
        array=new int[defaultCapacity];//defaultCapacity:栈元素的大小
        top=0;
    }
    public Stack(){
        this(20);//默认的栈的大小
    }
    public void push(int val){
        if(top==array.length){
            array=Arrays.copyOf(array,array.length*2);//扩容;array:是原来的array,array.length*2:新的长度
        }
        array[top++]=val;
    }
    public void pop(){
        if(top<=0){
            System.out.println("栈为空,无法删除");
            return;
        }
        top--;
        array[top]=0;//可加可不加,把所有空的位置保持为0;
    }
    public void top(){
        if(top<=0){
            System.out.println("栈为空,无法返回栈顶元素");
            return -1;
        }
        return array[top-1];
    }
    public int size(){//虽然是从0开始计数的,但返回的top就是栈的元素个数
        return top;
    }
    public boolean isEmpty(){//布尔类型的默认值是true或false,所以判断就好
        return top==0;//为空返回的就是true,不为空返回的就是false.
    }
}        
发布了61 篇原创文章 · 获赞 3 · 访问量 1200

猜你喜欢

转载自blog.csdn.net/qq_44847147/article/details/104051198