笔试算法须知---用JS实现栈处理问题

使用js实现stack

栈的性质:先进后出,只能在栈顶插入和删除

笔试算法须知---用JS实现栈处理问题_第1张图片
这就是一个栈
function Stack() {
      this.stackData = []; //保存栈内元素,初始化为一个空数组;
      this.top = 0;//栈顶位置,初始为0;
      this.push = push;//入栈
      this.pop = pop;//出栈
      this.peek = peek;//查看栈顶元素
      this.clear = clear;//清空栈
      this.length = length;//栈内存放的元素个数
}
function push(element){
      this.stackData[this.top++] = element;
}
function pop(){
      return this.stackData[--this.top];
}
function length(){
      return this.top;
}
function peek(){
      return this.stackData[this.top-1];
}
function clear(){
      this.top = 0;
}

/*测试stack的实现 */

var s = new Stack();
s.push("aa");
s.push("bb");
s.push("cc");
console.log(s.length());//3
console.log(s.peek());//cc
var popped = s.pop();
console.log(popped);//cc
console.log(s.peek());//bb

之前有道某雷的前端笔试题就是需要用到js实现栈来处理问题
题目大概就是:给你一个括号字符串,字符串中含有()[]{},然后判断该字符串中的括号是否合法匹配。

样例输入:
( [ { ] } )
输出:不合法
样例输入:
( [ ] { ( ) } )
输出:合法

function MatchBracket(BracketString){//函数名:匹配括号,参数:括号字符串
var s = new Stack();
var bs = Array.from(BracketString);
for(var i=0;i

完整代码见Github:

https://github.com/edisonchan97/JS-algorithm/blob/master/%E5%8C%B9%E9%85%8D%E6%8B%AC%E5%8F%B7%E4%BB%A3%E7%A0%81

你可能感兴趣的:(笔试算法须知---用JS实现栈处理问题)