刷脸支付 ruby dataframe eloquent bluetooth camera vue社区 jquery去空格 java清空数组 map删除指定元素 solidworks图库 mysql函数返回结果集 mysql建表主键自增长 flutter 缺点 python正则匹配 python参数 配置python环境 python正则匹配空格 python路径设置 搭建java开发环境 java开发环境搭建 java时间格式化 java时间戳转日期 java目录 java安装教程 java网页 linux基础教程 linuxls命令 电池救星 删除数组中的某个元素 脚本之家官网 js延迟加载的方式 华为下拉开关设置 正当防卫4存档 只狼全鬼佛 s10截屏 网页自动点击 asp编程 sqlprompt cad乘号
当前位置: 首页 > 学习教程  > 编程语言

数据结构(JS实现)——栈的封装与应用

2021/1/28 22:39:10 文章标签:

文章目录一.什么是栈二.栈的封装三、栈的常见的操作3.1 push(element):添加一个新元素到栈顶位置3.2 pop():移除栈顶元素,同时返回被移除的元素3.3 peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除…

文章目录

  • 一.什么是栈
  • 二.栈的封装
  • 三、栈的常见的操作
    • 3.1 push(element):添加一个新元素到栈顶位置
    • 3.2 pop():移除栈顶元素,同时返回被移除的元素
    • 3.3 peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除栈顶元素,仅仅返回它)
    • 3.4 isEmpty():判空
    • 3.5 size():返回长度
    • 3.6 tostring():输出
  • 四、栈的应用(十进制转二进制)

一.什么是栈

栈是一种先进后出(LIFO)的有序集合,新添加的元素在栈顶,旧元素在栈底。

在这里插入图片描述

二.栈的封装

我们封装栈的常见方式有两种:

基于数组实现

基于链表实现

我们使用数组实现

function Stack(params) {
        // 栈中的属性
        this.items=[];
       
        // 栈中的相关操作
        // 栈中的相关操作
        // push(element):添加一个新元素到栈顶位置
        // pop():移除栈顶元素,同时返回被移除的元素
        // peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除栈顶元素,仅仅返回它)
        // isEmpty():判空
        // size():返回长度
        // tostring():输出
    }

三、栈的常见的操作

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

pop():移除栈顶元素,同时返回被移除的元素

peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除栈顶元素,仅仅返回它)

isEmpty():判空

size():返回长度

tostring():输出

3.1 push(element):添加一个新元素到栈顶位置

 Stack.prototype.push=function(element){
            this.items.push(element);
            return element;
        }

3.2 pop():移除栈顶元素,同时返回被移除的元素

 Stack.prototype.pop=function(){
            return this.items.pop();
        }

3.3 peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除栈顶元素,仅仅返回它)

  Stack.prototype.peek=function(){
            return this.items[this.items.length-1];
        }

3.4 isEmpty():判空

  Stack.prototype.isEmpty=function(){
            return this.items.length==0;
        }

3.5 size():返回长度

     Stack.prototype.size=function(){
            return this.items.length;
        }

3.6 tostring():输出

  Stack.prototype.tostring=function(){
            var str='';
            for (let index = 0; index < this.items.length; index++) {
                str+=this.items[index]+' '
            }
            return str;
        }

四、栈的应用(十进制转二进制)

十进制转二进制

思路:

例如num为100

则:1. 100/2=50…0

\2. 50/2=25…0

\3. 25/2=12…1

\4. 12/2=6…0

\5. 6/2=3…0

\6. 3/2=1…1

\7. 1/2=0…1

结果为:1100100

 // 十进制转二进制
    function dec2bin(num) {
        var target=new Stack();
        while (num>0) {
            target.push(num%2);
            num=Math.floor(num/2);
        }

        // 弹栈
        var str='';
        while (!target.isEmpty()) {
            str+=target.pop()+' ';
        }
        return str;
    }
    console.log(dec2bin(100));

本文链接: http://www.dtmao.cc/news_show_650046.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?