0
点赞
收藏
分享

微信扫一扫

1. 数据结构与算法——栈

大自然在召唤 2022-05-05 阅读 85

数据结构与算法

数据结构是计算机中存储、组织数据的方式

算法通俗理解就是解决问题的方法/步骤逻辑

	 定义:
	 1.一个有限的指令集,每条指令的描述不依赖与语言
	 2.接受一些输入(也可能不需要输入),产生输出
	 3.一定在有限步骤之后终止

数据结构的实现,离不开算法

数组是一种线性结构,可以在数组的任意位置插入和删除数据
为了实现某些功能,必须对这种任意性加以限制
栈和队列就是常见的受限的线性结构

 后进先出  LIFO   类似于子弹夹

在这里插入图片描述

在这里插入图片描述

所以递归容易出现栈溢出

在这里插入图片描述

栈结构的实现

1.基于数据
2.基于链表

基于数据实现栈结构
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>itjc8</title>
</head>
<body>
<script>
    // 栈类
    function Stack() {
        // 栈中的属性
        var items = []

        // 栈相关的方法
        // 压栈操作
        this.push = function (element) {
            items.push(element)
        }

        // 出栈操作
        this.pop = function () {
            return items.pop()
        }

        // peek操作  窥视
        this.peek = function () {
            return items[items.length - 1]
        }

        // 判断栈中的元素是否为空
        this.isEmpty = function () {
            return items.length == 0
        }

        // 获取栈中元素的个数
        this.size = function () {
            return items.length
        }
    }

//    // 模拟面试题
//    var stack = new Stack()
//
//    // 情况下代码模拟
//    stack.push(6)
//    stack.push(5)
//    stack.pop()     // 5
//    stack.push(4)
//    stack.pop()     // 4
//    stack.push(3)
//    stack.pop()     // 3
//    stack.pop()     // 6
//    stack.push(2)
//    stack.push(1)
//    stack.pop()     // 1
//    stack.pop()     // 2

    // 封装十进制转二进制的函数
    function dec2bin(decNumer) {
        // 定义变量
        var stack = new Stack()
        var remainder;

        // 循环除法
        while (decNumer > 0) {
            remainder = decNumer % 2
            decNumer = Math.floor(decNumer / 2)
            stack.push(remainder)
        }

        // 将数据取出
        var binayriStrng = ""
        while (!stack.isEmpty()) {
            binayriStrng += stack.pop()
        }
        return binayriStrng
    }

    // 测试函数
    alert(dec2bin(10))
    alert(dec2bin(233))
    alert(dec2bin(1000))
</script>
</body>
</html>
举报

相关推荐

0 条评论