首页 > 代码库 > Javascript与数据结构系列(二)——队列的实现

Javascript与数据结构系列(二)——队列的实现

队列实现

使用数组来实现队列看起来顺理成章。JavaScript 中的数组具有其他编程语言中没有的优点, 数组的 push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素。

 

push() 方法将它的参数插入数组中第一个开放的位置,该位置总在数组的末尾,即使是个 空数组也是如此。请看下面的例子:

 

names = [];

name.push("Cynthia"); names.push("Jennifer"); print(names); // 显示 Cynthia,Jennifer

然后使用 shift() 方法删除数组的第一个元素:

 

names.shift();

准备开始实现 Queue 类,先从构造函数开始:

 

function Queue() {

    this.dataStore = [];

    this.enqueue = enqueue;

    this.dequeue = dequeue;

    this.front = front;

    this.back = back;

    this.toString = toString;

    this.empty = empty;

}

enqueue() 方法向队尾添加一个元素:

 

function enqueue(element) {

    this.dataStore.push(element);

}

dequeue() 方法删除队首的元素:

 

function dequeue() {

    return this.dataStore.shift();

}

可以使用如下方法读取队首和队尾的元素:

 

function front() {

    return this.dataStore[0];

}

function back() {

    return this.dataStore[this.dataStore.length-1];

}

还需要 toString() 方法显示队列内的所有元素:

 

 function toString() {

    var retStr = "";

    for (var i = 0; i < this.dataStore.length; ++i) {

       retStr += this.dataStore[i] + "\n";

    return retStr;

 }

最后,需要一个方法判断队列是否为空:

 

function empty() {

    if (this.dataStore.length == 0) {

       return true;

    }

    else {

       return false;

    } 

}

 

代码归纳

function Queue() {

  this.dataStore = [];

  this.enqueue = enqueue;

  this.dequeue = dequeue;

  this.front = front;

  this.back = back;

}

this.toString = toString;

this.empty = empty;

}

 

function enqueue(element) {

  this.dataStore.push(element);

}

 

function dequeue() {

  return this.dataStore.shift();

}

 

function front() {

  return this.dataStore[0];

}

 

function back() {

  return this.dataStore[this.dataStore.length - 1];

}

 

转自: https://segmentfault.com/a/1190000004921006

作者: Vagor

Javascript与数据结构系列(二)——队列的实现