栈的初步认识
数据结构:栈
- 是一个后进先出的数据结构
- JavaScript没有栈的数据结构
- 但是我们可以用Array来模拟栈这个数据结构
图解栈数据结构
生活中的例子看栈😎
先举个生活中的例子,比如你妈妈让你刷盘子,加入有五个盘子,你肯定事这样干的:
啥意思,就是你最先洗完的那个盘子肯定是放在最低下的,然后其他的挨个往上放,最后洗完的那个盘子肯定是放在最上面的😃 那当我们需要用这些盘子的时候,肯定也是挨个从上面依次拿一个用拿一个用,对吧😁 但是嘞,如果你告诉我,您洗完盘子是跟摆地雷阵似的,我还能说些什么,你会玩儿呗🤣
栈的数据存取
对于栈,它就和这个刷盘子放盘子差不多,每个盘子其实就相当于一个数据,放好的这些盘子的结构就是栈这种数据结构,当然,对于对于盘子我们有放和取两个基本操作,同样的,对于栈来说,无非也就是数据的存取。咋样,看的懂不😁
在JavaScript去模拟栈的数据结构
我们可以用断点调试,查看数据的变化
const stack = [];
stack.push(1);
stack.push(2);
const item1 = stack.pop();
const item2 = stack.pop();
LeetCode:20.有效的括号
var isValid = function(s) {
if(s.length%2 === 1) return false
const stack = [];
for(let i = 0;i < s.length;i ++){
const c = s[i];
if(c==='(' || c === '{' || c === '['){
stack.push(c)
} else {
//) }
const t = stack[stack.length - 1];
// console.log(stack.length)
// console.log(t)
console.log(c)
if(
(t === '(' && c === ')') ||
(t === '{' && c === '}') ||
(t === '[' && c === ']')
){
stack.pop()
} else {
return false;
}
}
}
return stack.length === 0;
};
console.log(isValid("["))
console.log(isValid("({[]})"))
console.log(isValid("[]{}()"))
下面咱看看队列的示意图吧:
这里的入队,出队,队尾和队头应该都好理解啊,看着图一目了然啊,这就是队列了,这么一看,是不是感觉队列也好简单啊,其实关于队列的概念,真的没啥难的😀
生活案例
车站排队买票
先买到票的人先出来 到这你们一改可以对它有一个大概的理解了吗??