JavaScript 实现双向队列并用此来测试一个单词是否为回文

发表于:魔客站 2019-4-15 分类:建站教程 阅读: 54

标签:push   ***   function   ons   数据结构   删除   需要   script   back   

题目出自《数据结构与算法 JavaScript 描述》一书第五章,习题 5.2

代码如下:

/*************** Deque 类的实现 *************/function Deque() {    this.dataStore = [];    this.enqueue = enqueue;    this.dequeue = dequeue;    this.unshift = unshift;    this.pop = pop;    this.front = front;    this.back = back;    this.toString = toString;    this.empty = empty;}// 向队尾添加一个元素function enqueue(element) {    this.dataStore.push(element);}// 从队尾删除一个元素function pop() {    return this.dataStore.pop();}// 增加元素到队首function unshift(element) {    this.dataStore.unshift(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 (let 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;    }}/******************** 用 Deque 类判断一个给定单词是否为回文*****************/function isHuiWen(str) {    var d = new Deque();    for (let i = 0; i < str.length; ++i) {        d.enqueue(str[i]);    }    var front = ‘‘, end = ‘‘;    // 如果单词长度是奇数,则中间那个不需要判断    while (!d.empty() && d.dataStore.length != 1) {        front = d.dequeue();        end = d.pop();        if (front != end) {            return false;        }    }    return true;}var testStr = "levvel";console.log(isHuiWen(testStr));

JavaScript 实现双向队列并用此来测试一个单词是否为回文

标签:push   ***   function   ons   数据结构   删除   需要   script   back   

原文地址:https://www.cnblogs.com/wuzhiblog/p/js_data_structure_5_2.html