使用JS对栈进行简单封装

栈:

是一种遵循后进先出(Last In First Out / LIFO) 原则的一种有序集合。

新添加或者要删除的元素都会保存在栈的同一端,我们把它叫做栈顶,另外一端叫做栈底

在栈中所有的新元素都接近栈顶,而所有的旧元素都接近栈底

栈的操作:

栈的常见操作有:

push(elment):添加一个元素到栈顶位置

pop():删除一个栈顶元素

peek():查看栈顶元素

isEmpty():判断整个栈是否为空,返回一个布尔值

size():返回栈中元素的个数

toString():将栈中所有的元素转换为String类型

clear():清空整个栈

这些方法的代码实现:

push(element): 将元素压入栈,并且添加的元素只能放在栈顶(也就是数组的尾部)

push(element) {
        this.item.push(element);
      }

pop()从栈中去元素,移除的就只能是栈顶的元素

 pop() {
        return this.item.pop();
      }

peek()查看一下栈顶的元素

      peek() {
        return this.item[this.item.length - 1];
      }

isEmpty()判断栈是否为空

      isEmpty() {
        return this.item.length === 0;
      }

size()获取栈中元素的个数

      size() {
        return this.item.length;
      }

toString():将栈中所有的元素转化为字符串

      toString() {
        let resString = "";
        for (let i = 0; i < this.item.length; i++) {
          resString += this.item[i] + " ";
        }
        return resString;
      }

clear()清空栈中的所有的元素
   

  clear() {
        return this.item = [];
      }


   完整代码:

 //封装栈类
    class Stack {
      constructor() {
        this.item = [];
      }
      //栈中的相关操作
      //1.push()将元素压入栈,并且添加的元素只能放在栈顶(也就是数组的尾部)
      push(element) {
        this.item.push(element);
      }
      //2.pop()从栈中去元素,移除的就只能是栈顶的元素
      pop() {
        return this.item.pop();
      }
      //3.peek()查看一下栈顶的元素
      peek() {
        return this.item[this.item.length - 1];
      }
      //4.isEmpty()判断栈是否为空
      isEmpty() {
        return this.item.length === 0;
      }
      //5.size方法获取栈中元素的个数
      size() {
        return this.item.length;
      }
      //6.toString()toString方法
      toString() {
        let resString = "";
        for (let i = 0; i < this.item.length; i++) {
          resString += this.item[i] + " ";
        }
        return resString;
      }
      //7.clear()清空栈中的所有的元素
      clear() {
        return this.item = [];
      }
    }

创建一个栈验证一下所有的方法:

    //创建一个栈,验证一下栈类的所有方法
    const stack = new Stack();
    //验证新创建的栈类是否为空
    console.log(stack.isEmpty()); //true
    //在新创建的栈类中添加两个元素
    stack.push('ziop');
    stack.push('lyyc');
    //查看栈顶的元素
    console.log(stack.peek());//lyyc
    //查看栈的元素个数
    console.log(stack.size());//2
    //将栈顶的元素弹出
    console.log(stack.pop());//lyyc
    //将栈中的元素清空,栈中元素为0个
    stack.clear();
    console.log(stack.size());//0
    //在栈中添加数字1 2
    stack.push(1);
    stack.push(2);
    //调用栈的toString(),将栈中的元素都转为字符串类型
    console.log(stack.toString()); // 1 2
    console.log(typeof (stack.toString())); //string

我这里是采用类的形式进行封装,可以使用函数的方式进行封装,具体实现方式可以学习coderwhyB站的视频进行学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值