【前端面试题】实现一个栈数据结构,接口如下:请实现该类的入栈、出栈、弹栈、栈长度(内含前端面试题源码地址,不断更新)

实现一个栈数据结构,接口如下:请实现该类的入栈、出栈、弹栈、栈长度

一、介绍

1、入栈

首先介绍一下push和unshift的使用

push(push进来的数据放到最后面):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
console.log(fruits);//["Banana", "Orange", "Apple", "Mango","Kiwi"]

unshift(unshift进来的数据放到最前面):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Kiwi");
console.log(fruits);//["Kiwi","Banana", "Orange", "Apple", "Mango"]
因为一般是把[0]——也就是第一个进来的数作为栈底,所以选择push将后进入的数作为栈顶放在后面。

代码:

//入栈方法(加到栈顶)
in(value) {
    //一般[0]的位置时栈底
    this.items.push(value)
}

2、出栈

首先介绍一下pop和shift的使用
pop(删除数组中的最后一个项目):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
console.log(fruits);//["Banana", "Orange", "Apple"]

shift(删除数组中的第一个项目):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift();
console.log(fruits);//["Orange", "Apple", "Mango"]
因为一般是把[0]——也就是第一个进来的数作为栈底,所以选择pop将最后一个数删除。

代码:

//出栈(遵循后入(栈顶)先出的原则)
out() {
    return this.size() > 0 ? this.items.pop() : null;
}

3、栈顶

栈顶指的是 数组总长度-1 这个位置的数,所以我们只需要把这个数 return 出来即可
代码:

//弹栈(取到栈顶的值,不删除)
top() {
    return this.size() > 0 ? this.items[this.size() - 1] : null;
}

4、栈长度

栈长度指的是这个数组的总长度,使用 length 获取即可

代码:

//计算栈的长度
size() {
    return this.items.length
}

二、整体代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>栈数据结构的实现</title>
</head>

<body>
    <script>
        class Stack {
            //构造器
            constructor() {
                this.items = [];
            }
            //入栈(加到栈顶)
            in(value) {
                //一般[0]的位置时栈底
                this.items.push(value)
            }
            //出栈(遵循后入(栈顶)先出的原则)
            out() {
                return this.size() > 0 ? this.items.pop() : null;
            }
            //弹栈(取到栈顶的值,不删除)
            top() {
                return this.size() > 0 ? this.items[this.size() - 1] : null;
            }
            //计算栈的长度
            size() {
                return this.items.length
            }
        }

		//实例化对象
        let stack = new Stack();
        stack.in(0);
        stack.in(1);
        stack.in(2);
        console.log(stack.items)// [0, 1, 2]
        stack.out();
        console.log(stack.items)// [0, 1]
        console.log(stack.top())// 1
        console.log(stack.size())// 2
    </script>
</body>

</html>

前端所有面试题源码地址:https://gitee.com/daiwanghao/front-end-interview-questions.git

以上就是实现一个栈数据结构的内容,请大家关注《前端面试题》专栏。
我会将自己平时项目中常见的问题以及笔试面试的知识在CSDN与大家分享,一起进步,加油。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@Dai

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

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

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

打赏作者

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

抵扣说明:

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

余额充值