前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据驱动型的设计03之Queue队列

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

作者头像
mixlab
发布2019-09-26 10:17:20
4070
发布2019-09-26 10:17:20
举报

本系列从数据结构相关的计算机知识出发,从数据的角度提出一些数据驱动的设计思维模式。

第01期

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

第02期

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

第03期

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

Queue

队列

队列是一种先进先出(FIFO:first in first out)的数据结构。它只允许在表的前端进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。这期比较简单,基于上期实现的LinkedList结构,来实现Queue,然后为Queue添加插入数据及删除数据的方法:

enqueue

dequeue

删除操作相当于移除LinkedList的head节点,因为Queue只允许在表的前端进行删除操作。那么,我们就拓展下上一期实现的LinkedList类的方法:

代码语言:javascript
复制
LinkedList.prototype.deleteHead=function() { 


   if (!this.head) {
         return null;
   }    
         
         
   const deletedHead = this.head;
   
   
    if (this.head.next) {
     
     this.head = this.head.next;
     
   } else {
    
     this.head = null;
     this.tail = null;
     
   }    
     
         return deletedHead;
         
 }

拓展完LinkedList后,我们实现下enqueue和dequeue,代码如下:

代码语言:javascript
复制
class LinkedList(){...};

class Queue {
 constructor() {
 
   this.linkedList = new LinkedList();
   
 } enqueue(value) {
   
   this.linkedList.append(value);
   
 } dequeue() { 
   
   const removedHead = this.linkedList.deleteHead();
   
   return removedHead ? removedHead.value : null;
   
 }}

下面从其他领域看先进先出的概念:

先进先出

FIFO:first in first out

物流控制有一个存货模式的概念,最常用的是先进先出模式。其实还包括后进先出、随机出库这2种。

物流控制先进先出意思是:生产日期靠前的货物陈列在前面,确保生产日期靠前的商品先销售。

优点

确保所有商品在正常的保质期内销售,控制损耗。而对于没有保质期的商品,先进先出可以永远保持陈列商品的新鲜。

缺点

特别对于存货进出量频繁的企业比较繁琐。而且当物价上涨时,会高估企业当期利润和库存存货价值;反之,会低估企业存货价值和当期利润。

回到我们设计领域,举一个人工智能+平面设计的案例:

通过一个按钮,机器按照某种逻辑(比如用户喜好的色彩、或跟文案最匹配的图片)更换图片素材,就是一个队列,可以用队列的数据结构来表示。

设计上,还有没有其他队列的例子?例如,建筑设计里的人流动线、游戏里的场景切换、UI界面的动效等等。

欢迎留言讨论~

待续。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档