数据结构(JAVA)第三篇-----栈和队列

目录

 

前言

一、栈

1.何为栈

定义:

2.栈的模拟实现

push(int val)

pop()

peek()

3.Stack的使用

4.例题

逆波兰式

二、队列

1.何为队列

2.队列的模拟实现

3.Queue的使用

4.例题

三、栈与队列的互相实现

1.用栈实现队列

2.用队列实现栈

总结

前言


一、栈

1.何为栈

定义

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。

入栈(push):栈的插入操作,插入的数据在栈的顶部。

出栈(pop):栈的删除操作,删除的数据在栈的顶部。

由此可见,栈的第一大特点便是数据遵循先进后出的原则。

2.栈的模拟实现

使用数组和链表都可以模拟实现栈

本篇使用数组。

RT:

public class Mystack {
    public int[] elem;
    public int usedsize;//标记当前元素个数
    public int DEFAULT_SIZE = 10;//默认容量

    public Mystack() {
        this.elem = new int[DEFAULT_SIZE];
    }
}

push(int val)

入栈

和顺序表类似,我们需要考虑当前栈是否满。如果满了,意味着入栈失败,我们直接return,也可以在此处抛异常,如果没满,我们只要在数值末尾插入即可。

因此我们需要先写一个判满函数:

public boolean isFull(){
        return this.usedsize == DEFAULT_SIZE;
    }

RT:

public void push(int val){
        if(isFull()){
           return;
        }
        this.elem[usedsize++] = val;
    }

pop()

出栈

同样,考虑到出栈,也有可能会存在栈为空的情况,因此我们先需要判空。不为空直接返回数组的最后一个元素。

RT:

public boolean isEmpty(){
        return this.usedsize==0;
    }
public int pop(){
        if(isEmpty()){
            System.out.println("kong");
            //最好抛异常
            return -1;
        }
        return this.elem[--usedsize];
    }

 peek()

返回栈顶元素(不删除)

public int peek(){
        if(isEmpty()){
            System.out.println("kong");
            //抛异常
            return -1;
        }
        return this.elem[usedsize-1];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

todd1er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值