[Java]栈的详解及基础操作

目录

一、了解栈

二、栈的操作

1. 创建一个栈

2. 判断栈空间是否为空

3. 判断栈空间是否为满

4. 获取栈的长度

5. 压入一个元素至栈中

6. 获取栈顶元素

7. 弹出一个栈顶元素

 三、栈、虚拟栈、栈帧的区别


一、了解栈

        栈作为一种线性的数据结构同时拥有链表的许多特征,由于栈的底部逻辑是线性表,所以我们可以将其看做一个只有一边能进一边能出的数组。

        栈的特性为固定一端进行入栈操作和出栈操作,在可以入栈和出栈的一端,我们称之为栈顶,另一端不能进不能出的我们称之为栈底。

从图中我们可以清楚的看到栈的出入规律,最先进去的元素却后出栈,我们可以称之为后进先出。

二、栈的操作

栈的操作包括创建,入栈出栈,获取栈顶元素等,接下来我会用代码来挨个演示。

1. 创建一个栈

public class MyStack {
    int array[];
    int size;
    public MyStack(){
        array = new int[5];
    }
}

栈中的必要元素是一个数组以及数组长度

2. 判断栈空间是否为空

//判断栈空间是否为空
    public boolean isEmpty(){
        return size == 0;
    }

3. 判断栈空间是否为满

//判断栈空间是否为满
    public void isFull(){
        if(size == array.length){
            array = Arrays.copyOf(this.array,2*array.length);
        }
    }

4. 获取栈的长度

//获取栈的长度
    public int getSize(){
        return this.size;
    }

5. 压入一个元素至栈中

//压入一个元素
    public int push(int data){
        isFull();
        array[size++] = data;
        return data;
    }

6. 获取栈顶元素

//获取栈顶元素
    public int peek(){
        if(isEmpty()){
            System.out.println("栈为空");
        }
        return array[size-1];
    }

7. 弹出一个栈顶元素

//弹出一个栈顶元素
    public int pop(){
        isEmpty();
        int data = peek();
        size--;
        return data;
    }

实现了一些基本操作后我们来使用代码验证一下

public static void main(String[] args) {
        MyStack stack = new MyStack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        System.out.println(stack.getSize());
        System.out.println("===========");
        System.out.println(stack.peek());
        System.out.println(stack.pop());
        System.out.println(stack.peek());
    }

 三、栈、虚拟栈、栈帧的区别

栈是一种线性数据结构,虚拟栈是内存分配时需要在内存开辟的空间,栈帧则是内存空间开辟后的单块小内存空间。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值