zoukankan      html  css  js  c++  java
  • 【js数据结构】栈解决佩兹糖果盒问题

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

    解决此问题的思路是从放糖果的栈(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);
    

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

  • 相关阅读:
    yii2权限控制rbac之rule详细讲解
    yii2权限控制rbac之详细操作步骤
    安装 Autoconf, Automake & Libtool
    Linux查看物理CPU个数、核数、逻辑CPU个数
    Nginx端口占用问题
    Druid加密
    Ubuntu16.04安装Zabbix3.2(快速安装教程)
    飞冰ICE
    BeiDou开源项目
    Arthas开源项目
  • 原文地址:https://www.cnblogs.com/xiabaoying/p/6561066.html
Copyright © 2011-2022 走看看