现实生活中栈的一个例子是佩兹糖果盒。 想象一下你有一盒佩兹糖果, 里面塞满了红色、 黄色和白色的糖果, 但是你不喜欢黄色的糖果。 使用栈( 有可能用到多个栈) 写一段程序, 在不改变盒内其他糖果叠放顺序的基础上, 将黄色糖果移出 
取糖果放入栈,糖果的顺序情况如下图:

解决此问题的思路是从放糖果的栈(stack)中,将不喜欢的糖果放在一个栈(getColorStack)里,将其他糖果放入一个栈(setColorAtack),最后取完糖果后,将盛装其他糖果的栈(setColorAtack)中的糖果逐个将其放入原来的栈(stack)中,其位置将不会变化。如下图所示:

那么对比一下原来的stack与函数处理过的stack

  

顺序没有改变!

实现代码如下,栈的构造函数见上篇文章:

var  sweetBox = new Stack();
sweetBox.push('red');
sweetBox.push('yellow');
sweetBox.push('red');
sweetBox.push('yellow');
sweetBox.push('white');
sweetBox.push('yellow');
sweetBox.push('white');
sweetBox.push('yellow');
sweetBox.push('white');
sweetBox.push('red');function getColor(element, stack)
{var getColorStack = new Stack();var setColorStack =new Stack();while(stack.len()>0){if(stack.peek() == element){getColorStack.push(element);stack.pop();}else{setColorStack.push(stack.peek());stack.pop();}}while(setColorStack.len()>0){stack.push(setColorStack.peek());setColorStack.pop();}console.info(stack.peek());
}
getColor('red',sweetBox);

  文章如有错误,望大家指出,小女子这厢有礼了 >.<

转载于:https://www.cnblogs.com/xiabaoying/p/6561066.html

【js数据结构】栈解决佩兹糖果盒问题相关推荐

  1. JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆

    JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...

  2. 利用顺序栈解决括号匹配问题(c++)-- 数据结构

    利用顺序栈解决括号匹配问题(c++)-- 数据结构 参考文章: (1)利用顺序栈解决括号匹配问题(c++)-- 数据结构 (2)https://www.cnblogs.com/yi2105/p/106 ...

  3. js实现栈、队列、链表数据结构

    面试遇到的问题,当时有点懵 脑袋一片空白,面试完了想了下,我可能是傻了,明明在问这个问题之前面试官问了我字符串都有哪些操作方法!!!我是真鱼吧! 今天看了下<学习JavaScript数据结构与算 ...

  4. 数据结构链表之栈——解决括号匹配问题和逆波兰表达式求值问题——6

    括号匹配问题和逆波兰表达式求值问题 基于上一节已经使用python代码对栈进行了简单的实现,这一节我们在其基础上解决两个常见的问题 案例 括号匹配问题(点我直接到代码实现) 逆波兰表达式求值问题(点我 ...

  5. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-AVL树(一)

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  6. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  7. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  8. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-堆和优先队列(一)

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  9. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

最新文章

  1. Android原生开发modules方式导入Unity问题汇总
  2. C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
  3. Android监听安装卸载
  4. 虚拟桌面几个常见问题?
  5. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser
  6. Redis持久化方式~RDB 持久化和AOF 持久化
  7. 52单片机iic读写c语言,如何52单片机的I2C读写24C08程序问题排查修改
  8. paip.提升效率---提升绑定层次--form绑定取代field绑定
  9. Sybase数据库应用系统调优的五大领域
  10. thinkphp js带参数跳转页面
  11. JavaScript写一个能遍历对象和数组的通用forEach函数
  12. (推荐)(提供下载)ORACLE常见问题一千问(不怕学不成、就怕心不诚!)
  13. 使用小波变换进行Pan和多光谱融合
  14. Monkey Test - 命令
  15. 怎么看vray渲染进度_3dmax渲染怎么看渲染时间
  16. Sqlite 对数据进行增删改查
  17. 91 个常见的 Laravel 面试题和答案
  18. Kyrie Irving邀请粉丝加入Lineage Logistics的Share A Meal运动,帮助受COVID-19疫情影响的人们
  19. 送快递到程序员,自学3年终于转行成功,薪资从5K涨到了12K
  20. 使用CSS画一个萌萌的大白

热门文章

  1. 网络模型(7层网络模型)
  2. linux管道编程(实验4)
  3. 汽车之家股票回购速度远低于预期,面临严重的资本投资风险
  4. [SCOI2007]修车【最大流最小费用】
  5. 用这个免费CDN,治愈WordPress网站加载缓慢的大难题
  6. apache beam 入门之beam-sql
  7. 多元正态分布的定义及基本性质
  8. .nii格式文件python_python 读取.nii格式图像实例
  9. 虚拟机ubuntu网络连接不可用
  10. python学习笔记整理tcy1: with上下文管理