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);
    

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

  • 相关阅读:
    微信小程序view标签以及display:flex的测试
    微信小程序简单入门理解
    spring+mybatis的简单配置示例
    反链与外链的区别汇总
    隐性URL与显性URL区别与SEO考虑
    你是如何为公司死心塌地卖命的?
    大三下学期十七周总结
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址、IP段/数字
    大三下学期十六周总结
    图解高内聚与低耦合
  • 原文地址:https://www.cnblogs.com/xiabaoying/p/6561066.html
Copyright © 2011-2022 走看看