JS 实现出入栈操作 #18

简介: JS 实现出入栈操作 #18


栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称之为栈顶。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。盘子就是最好的例子,最后叠入的盘子,总是最先出去。


实现


function stack() {
    this.dataStore = []; //初始化数组
    this.topa = 0; //栈位
    this.pop = pop; //出栈
    this.push = push; //入栈
    this.clear = clear; //清楚栈
    this.length = length; //返回栈的长度
}
function pop() {
    return this.dataStore[--this.topa];
}
function push(element) {
    return this.dataStore[this.topa++] = element;
}
function length() {
    return this.topa;
}
function clear() {
    this.topa = 0;
}
var s = new stack();
s.push(1);
s.topa;


利用栈的特点很容易实现回文


回文是指,正过来和反过来都是一样,比如,比如,在栈中就是


通过循环读取,判断与传入的字符串是否相等,即判断是否是回文。dad,racecardad[d] [a] [d]

function isPalindremo(word) {
    var s = new stack();
    for (var i = 0, len = word.length; i < len; i++) {
        s.push(word[i]);
    }
    var rword = '';
    while (s.length() > 0) {
        rword += s.pop();
    }
    if (rword === word) {
        return true;
    } else {
        return false;
    }
}
isPalindremo('dad');


判断括号是否匹配


function isBrackets(expresseion) {
    var s = new stack();
    var b = false;
    var c = false;
    for (var i = 0, len = expresseion.length; i < len; i++) {
        if (expresseion[i] == '(') {
            b = true;
        }
        if (expresseion[i] == ')') {
            c = true;
        }
        s.push(expresseion[i]);
    }
    if (!(b && c)) {
        s.push(')');
        return s.length();
    } else {
        return false;
    }
}
console.log(isBrackets('123 + (a+x+x5+a'));
目录
相关文章
|
5月前
|
前端开发 JavaScript 数据处理
在JavaScript中,异步函数是指那些不会立即执行完毕,而是会在未来的某个时间点(比如某个操作完成后,或者某个事件触发后)才完成其执行的函数
【6月更文挑战第15天】JavaScript中的异步函数用于处理非同步任务,如网络请求或定时操作。它们使用回调、Promise或async/await。
52 7
|
5月前
|
JSON 前端开发 JavaScript
在JavaScript中,异步编程是一种处理非阻塞操作(如网络请求、文件读写等)的重要技术
【6月更文挑战第12天】JavaScript中的异步编程通过Promise和async/await处理非阻塞操作。Promise管理异步操作的三种状态,防止回调地狱,支持链式调用和并行处理。async/await是ES8引入的语法糖,使异步代码更像同步代码,提高可读性。两者结合使用能更高效地处理复杂异步场景。
38 3
|
5月前
|
JavaScript 前端开发 UED
JavaScript基础-DOM操作:查找、创建、修改
【6月更文挑战第12天】本文介绍了DOM基础,包括查找元素(getElementById、getElementsByClassName等)、创建新节点(createElement、createTextNode)和修改节点(innerText、innerHTML、setAttribute等)。强调了易错点,如ID唯一性、性能考量和安全问题,并提供了代码示例。熟练掌握DOM操作对前端开发至关重要,但应注意性能优化,适时使用框架或库。
58 2
JavaScript基础-DOM操作:查找、创建、修改
|
4月前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
40 1
|
4月前
|
存储 JavaScript 前端开发
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
44 1
|
5月前
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
128 1
|
5月前
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
37 1
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
5月前
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
130 2
|
5月前
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
68 2