队列实现

使用数组来实现队列看起来顺理成章。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];
}

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

后话

当然,学好前端,你还需要关注一个公众号!——每日前端
各位兄弟姐妹,共勉!
图片描述


Vagor
726 声望44 粉丝

稳住,稳住啊!!