function Queue() {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.fornt = front;
this.back = back;
this.toString = toString;
this.empty = empty;
this.count = count;
}
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 reStr = '';
for (let i = 0; i < this.dataStore.length; i++) {
reStr += this.dataStore[i]
}
return reStr
}
function empty() {
if (this.dataStore.length == 0) {
return true
} else {
return false
}
}
function count() {
return this.dataStore.length;
}
- 修改queue类,形成Deque类,允许队列两端添加和删除元素,也叫双向队列
2.使Deque类来判定一个给定的单词是否为回文
function Deque() {
}
Deque.prototype = new Queue();
// l:left r:right
Deque.prototype.enqueue = function (element, direction) {
var _this = this;
switch (direction) {
case 'l':
_this.dataStore.unshift(element)
break;
case 'r':
_this.dataStore.push(element)
break;
default:
_this.dataStore.push(element);
}
}
Deque.prototype.dequeue = function (direction) {
var _this = this;
switch (direction) {
case 'l':
_this.dataStore.shift()
break;
case 'r':
_this.dataStore.pop()
break;
}
}
function test(word) {
var l = new Deque();
l.dataStore = [];
var r = new Deque();
r.dataStore = [];
for (let i = 0; i < word.length; i++) {
l.enqueue(word[i], 'l')
r.enqueue(word[i], 'r')
}
if (l.toString() == r.toString()) {
return true
} else {
return false
}
}
console.log(test('hahaa')) //false
console.log(test('haah')) //true
- 优先级高的优先码也大
function Patient(name, code) {
this.name = name;
this.code = code;
}
var PriorQueue = function () { }
PriorQueue.prototype = new Queue();
PriorQueue.prototype.dequeue = function () {
var max = this.dataStore[0].code;
var index = 0;
for (let i = 0; i < this.dataStore.length; i++) {
if (max < this.dataStore[i].code) {
max = this.dataStore[i].code;
index = i
}
}
return this.dataStore.splice(index, 1)
}
var priorQueue = new PriorQueue();
priorQueue.enqueue(new Patient('张三', 10));
priorQueue.enqueue(new Patient('张三1', 3));
priorQueue.enqueue(new Patient('张三2', 11));
priorQueue.enqueue(new Patient('张三3', 23));
priorQueue.enqueue(new Patient('张三4', 1));
console.log(priorQueue.dequeue());
- 控制候诊室内活动 a).患者进入候诊室 b).患者就诊 c.)显示等待就诊患者名单
var visits = function () {
}
visits.prototype = new PriorQueue();
visits.prototype.in = function (p) {
this.enqueue(p)
}
visits.prototype.vist = function () {
this.dequeue()
}
visits.prototype.show = function () {
return this.dataStore
}
var visites = new visits();
visites.in(new Patient('张三', 10));
visites.in(new Patient('张三1', 3));
visites.in(new Patient('张三2', 11));
visites.in(new Patient('张三3', 23));
visites.in(new Patient('张三4', 1));
console.log(visites.dequeue())
console.log(visites.show())
网友评论