数据驱动型的设计04之Stack

一个哥们,有次聚会说自己买了很多条iphone数据线,家里每个房间插一条,走到哪儿都能随时充电。在场的姑娘们都当成是段子笑笑就过去了,只有个细心的姑娘悄悄问他买了多少条,他说42条。现在他和她在北京三环内共有42个房间的数套豪宅愉快地生活,下个月结婚。这就是数据分析。

形象生动地描述了数据分析的应用场景。回到主题,本系列从数据结构相关的计算机知识出发,希望从数据的角度提出一些数据驱动的设计思维模式。

第01期

总体介绍数据结构与设计的关系,用数据结构的方式来思考设计,并通过几个案例介绍一些大的思路。

第02期

介绍数据结构中的链表结构,并探讨设计中可能的链表数据。

第03期

介绍数据结构中的队列结构,及在智能设计中的应用。

以下为本期正文内容:

Stack

堆栈

是一个后进先出(LIFO)的数据类型:最后一个放入堆栈中的物体总是被最先拿出来。读者还记得上一期Queue队列的先进先出(FIFO)模式吗?

堆栈中定义两个最重要的操作是push和pop。

push操作在堆栈的顶部加入一个元素。

pop操作相反, 在堆栈顶部移去一个元素, 并将堆栈的大小减一。

同样的,Stack可以基于上期实现的LinkedList结构,来实现。

class LinkedList{...};

class Stack{  constructor() {
   this.linkedList = new LinkedList();  }  push(value) {
   this.linkedList.prepend(value);  }  pop() {
   const removedTail = this.linkedList.deleteHead();
   return removedTail ? removedTail.value : null;  }}

栈的应用

编写一个程序,判断括号是否匹配。比如下面这些字符串:

(()()()())(((())))(()((())()))((((((())()))(()()(()

我们先给Stack增加一个方法,用于判断是否为空:

Stack.prototype.isEmpty=function() {
   return !this.linkedList.tail;  }

图示来理解下过程:

用一个栈来存放所有的“( ”,遍历字符串的每一位,判断是否“( ”,若为“( ”,则放入栈中

若是“ )”,则出栈

遍历完后,判断下栈是否为空,若为空,则此字符串的括号是匹配的。

代码如下:

function checker(symbolStr){
  var  s = new Stack();
  var  balanced = true;
  var  index = 0;
 
  for(var i=0;i<symbolStr.length;i++){
      if(balanced){
          var symbol = symbolStr[index];
         
        if(symbol=='('){             s.push(symbol);
         }else{
             if(s.isEmpty()){
                   balanced = false;
              }else{
               s.pop();
              };
     };      index = index + 1;
};};    if (balanced && s.isEmpty()){
        return true
   } else{
        return false
   };
};

以上是关于Stack“后进先出”模式具体应用的一个小练习。

补充一个,堆栈的形态在UI的应用。IOS的应用管理,把每个程序用卡片的形式作隐喻,在多任务的操作中配合手势区域的交互手势,让多任务操作非常便捷。

待续。

-------------------------------

推荐:

AI 时代的人机协同创作

AI + Blockchain = ?

AI设计系统“设计之神”

智能产品架构师活动-mixlab-7月活动圆满落幕

ML37-Baoling【mixlab共建者的故事】

-------------------------------

mixlab社区介绍:

中文:无界社区

英文:mixlab

定位:去中心化、非盈利、全球化

价值观:跨界 开放 互助 学习 创新

愿景:让每个人无限可能

目前,参与mixlab社区共建的人群主要来源于GoogleBrain、微软、华为、阿里鲁班、腾讯、旷视、三角兽、物灵科技、众安保险、美团、360等,还有高校背景人员,包括MIT、CMU、UoM、清华、上交大、同济等等,汇集了机器学习、自然语言处理、物联网、区块链、前端、后端、产品经理、UI设计师、建筑设计师、服装设计师、珠宝设计师、高校教师、CEO、投资人等。

我们没有年龄、经验、背景、地域的限制,不以盈利为目的,帮助每个人用最短的时间把新知识内化为个人的技能,让每个人都能产生无限可能。

mixlab期待您的加入!

赞赏的方式可以是点广告~

(0)

相关推荐

  • 堆、栈和堆栈的区别

    堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值. 栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.(PS:颇有砌墙的砖--后来者居上的赶脚 ...

  • 数据驱动型的设计03之Queue队列

    本系列从数据结构相关的计算机知识出发,从数据的角度提出一些数据驱动的设计思维模式. 第01期 总体介绍数据结构与设计的关系,用数据结构的方式来思考设计,并通过几个案例介绍一些大的思路. 第02期 介绍 ...

  • 数据驱动型的设计02

    本系列从数据结构相关的计算机知识出发,从数据的角度提出一些数据驱动的设计思维模式. 第01期总体介绍数据结构与设计的关系,用数据结构的方式来思考设计,并通过几个案例介绍一些大的思路. 第02期介绍数据 ...

  • 数据驱动型的设计01

    本系列从数据结构相关的计算机知识出发,从数据的角度提出一些数据驱动的设计思维模式.第01期总体介绍数据结构与设计的关系,用数据结构的方式来思考设计,并通过几个案例介绍一些大的思路. 1 数据结构与设计 ...

  • 【结构设计】自攻型螺丝柱设计

    结构设计 自攻型螺丝柱设计 1 螺丝柱 螺丝柱,也称BOSS柱,是塑胶件产品中常见的结构,也是塑胶件产品成型过程中问题比较多的结构之一 常见的螺丝柱缺陷主要有开裂.滑牙.根部断裂.产品表面缩水,发白等 ...

  • 626 热敏物料低能耗干燥装置的壳管型预热器设计软件

    背景 本篇是热敏物料低能耗干燥装置系列中的一部分,其他内容可阅读与本篇封面图片相同的各篇. 基本结构 壳管型预热器基本结构如下图. 图中,料液在管内自下向上流动,含水蒸气的湿空气在管外自上向下流动:湿 ...

  • 厨房装修干货,5㎡的U型厨房设计,怎么看...

    厨房装修干货,5㎡的U型厨房设计,怎么看都不厌倦! 改造后的厨房是L型橱柜+岛台变成了便利的U型设计,这样的厨房做饭都是快乐的. [微风]关于厨房尺寸 厨房面积:1.6*3.5m: 橱柜尺寸:0.63 ...

  • 《威尼斯的小艇》探究型学习活动设计

    适用年级:五年级 所属学科:语文  教者:田恩泊 一.学习主题:<威尼斯的小艇>是马克·吐温的一篇写景散文,课文通过介绍威尼斯小艇的样子.船夫驾驶小艇的高超技术以及小艇的重要作用,为我们展 ...

  • 如何创建一个数据驱动型组织?

    本文翻译自Sara Brown发表于MIT Management Sloan School的文章. 为什么重要创建数据文化是打造数据驱动型组织的关键之一.正确的技术.数据素养和打破现状是开始的起点. ...

  • 想成为大数据驱动型组织,应该如何选择存储系统?

    面对数据增长带来的严峻挑战,企业要想以大数据驱动持续业务发展,应该选择什么样的存储系统? 数据增长带来的严峻挑战 随着大数据时代的来临,企业数据团队如今每天需要处理的数据,已经超越了以往的任何时候. ...