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

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

  • 相关阅读:
    Codeforces Round #564(div2)
    714
    1471
    UVa 11134
    UVa 1152 -4 Values whose Sum is 0—[哈希表实现]
    UVa 1374
    UVA 1343
    UVa 12325
    Yet Another Number Sequence——[矩阵快速幂]
    River Hopscotch-[二分查找、贪心]
  • 原文地址:https://www.cnblogs.com/xiabaoying/p/6561066.html
Copyright © 2020-2023  润新知