zoukankan      html  css  js  c++  java
  • JavaScript 实现双向队列并用此来测试一个单词是否为回文

    题目出自《数据结构与算法 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] + "
    ";
        }
        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));
    
  • 相关阅读:
    treeview十八般武艺,js选择和绑定权限树
    开源WebOS
    公交车路线查询系统后台数据库设计
    网页信息抓取
    一步一步打造WebIM(3)——性能测试
    WebBrowser介绍——Javascript与C++互操作
    .NET文档生成工具ADB[更新至2.3]
    一步一步打造WebIM(4)——Comet的特殊之处
    在SQL Server中对视图进行增删改
    开源企业即时通讯和在线客服
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/js_data_structure_5_2.html
Copyright © 2011-2022 走看看