此队列类有什么问题? Java脚本

时间:2018-09-25 19:45:54

标签: javascript arrays

这是我的Que类,但不是很精通对象,因此获取对象的大小和元素对我不起作用

class Queue{
   // Array is used to implement a Queue
    constructor(){
        this.items = {};
        this.count = 0;
    }

    // enqueue(item)
    enqueue(element){    
        // adding element to the queue
        this.items.push(element);
        this.count++;
    }
    // dequeue()
    dequeue(){
        // removing element from the queue
        // returns underflow when called 
        // on empty queue
        if(this.isEmpty())
            return "Underflow";
        this.count--;
        return this.items.shift();
     }

    // front()
    front(){
        // returns the Front element of 
        // the queue without removing it.
        if(this.isEmpty())
            return "No elements in Queue";
        return this.items[0];
    }

// isEmpty()

    isEmpty(){
        // return true if the queue is empty.
        return this.items.length == 0;
    }

    // peek()
    peek(){
        return this.items[this.count]
    }

    size(element){
        return this.count;
    }

    show(){
        var result = '';
        var i=this.count-1;

        for(i; i>=0; i--){
            result += this.items[i] +' ';
        }

        return result;
    }
}

像size(),show()和isEmpty()之类的方法不起作用? 他们返回的是不确定的。

2 个答案:

答案 0 :(得分:1)

您的代码中的小错误。只需将对象文字更改为项目的数组文字即可。 this.items = []

class Queue{
   // Array is used to implement a Queue
    constructor(){
        this.items = []; //the problem is resolved
        this.count = 0;
    }

    // enqueue(item)
    enqueue(element){    
        // adding element to the queue
        this.items.push(element);
        this.count++;
    }
    // dequeue()
    dequeue(){
        // removing element from the queue
        // returns underflow when called 
        // on empty queue
        if(this.isEmpty())
            return "Underflow";
        this.count--;
        return this.items.shift();
     }

    // front()
    front(){
        // returns the Front element of 
        // the queue without removing it.
        if(this.isEmpty())
            return "No elements in Queue";
        return this.items[0];
    }
    
    // isEmpty()
    isEmpty(){
        // return true if the queue is empty.
        return this.items.length == 0;
    }

    // peek()
    peek(){
        return this.items[this.count]
    }

    size(element){
        return this.count;
    }

    show(){
        var result = '';
        var i=this.count-1;

        for(i; i>=0; i--){
            result += this.items[i] +' ';
        }

        return result;
    }
}

let q = new Queue();

console.log(q.isEmpty())
console.log(q.size())
console.log(q.show());

答案 1 :(得分:0)

首先,您要威胁项目,例如它是否是数组,但是您将其声明为任何类型的对象。 2,当您调用size函数时,返回以下更好的方法可能是:items.length。 最后,您现在可以从每种用法中删除count变量。

祝你好运。