0

このコードを減らして同じことを行う方法はありますが、100 文字少なくすることはできますか?

これは、pushHead、popHead、pushTail、popTail を持つシンプルなダブル エッジ キューであり、長さと isEmpty にアクセスする方法もあります。

var makeDeque = function()
{
    var a= [];
    this.length= a.length=0;

    this.pushHead=function(v)
    {
        a.unshift(v);
    }
    this.popHead=function()
    {
        return a.shift();
    }

    this.pushTail=function(v)
    {
        a.push(v);
    }

    this.popTail=function()
    {
    return a.pop();
    }

    this.isEmpty=function()
    {
        return a.length===0;
    }

    return this;
};

ありがとう!

4

1 に答える 1

0

手動の配列処理を取り除くことができます。これより短くすることはできないと思います (変数名を短くすることはできますが、コードはおそらく少なくともこれほど長くする必要があります)。

function Deque() {}
Deque.prototype = new Array();
var prot = Deque.prototype;
prot.pushHead = Deque.prototype.unshift;
prot.popHead = Deque.prototype.shift;
prot.pushTail = Deque.prototype.push
prot.popTail = Deque.prototype.pop
prot.isEmpty = function() {return this.length == 0}

このようにして、デフォルトのすべての機能も取得できますArraysDequeこの例では、実質的にクラスのサブクラスArrayです。

于 2013-08-30T11:42:05.010 に答える