文章链接: 栈与队列理论基础、 232.用栈实现队列、 225. 用队列实现栈、 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项
视频链接: 232.用栈实现队列、 225. 用队列实现栈、 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项
题目链接: 232.用栈实现队列、 225. 用队列实现栈、 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项
栈与队列理论基础:
一下为栈与队列的简单思维导图,并不完善,日后系统学习后再进行补充。
清晰版本请挪步幕布链接: https://mubucm.com/doc/2P0Yk-wWpzI
思路:
232.用栈实现队列
实现进队列操作:
直接塞进”进栈“中(stIn);
实现删除元素操作:
- 当stOut为空时,将stIn中的全部数据导入stOut中(要将stIn中的数据全部删除)
- 返回并删除stOut中的第一个元素(栈顶);
实现返回队列开头元素操作:
步骤与上一个操作一样,不同点在于要将删除的元素重新push回来;
实现对队列的判空操作:
直接对“进栈”和“出栈”判空;
225.用队列实现栈
难点在于pop()函数。所以接下来只论述如何实现这一元素。
- 先将size - 1 个元素放到队列后并弹出;
- 返回原队列最后一个元素(即新队列第一个元素),并删除;
20.有效的括号
不匹配的情况分为以下几种:
- 还没遍历完栈就为空(右括号多了)
- 遍历到的右括号与栈顶元素不一样(左右括号不匹配)
- 遍历完了但是栈里还有元素(右括号不够)
1047.删除字符串中的所有相邻重复项
困难:
232.用栈实现队列
问: int res = this->pop(); 这一代码是什么意思?
答:This-> 表示在类本身内部使用本类的属性或者方法
注意:是一个指针,要用->
来访问成员变量或成员函数。
225.用队列实现栈
无。
20.有效的括号
无。
1047.删除字符串中的所有相邻重复项
无。
今日收获:
经过这几道题,对栈的操作有了一定的了解,但是在做题时并不能看出这道题是用栈进行求解,还是得多加练习。