目录
题目
序号 | 题目 | 链接 |
---|---|---|
1 | 括号匹配问题 | LeetCode |
2 | 用队列实现栈 | LeetCode |
3 | 用栈实现队列 | LeetCode |
4 | 设计循环队列 | LeetCode |
1.括号匹配问题
这个题目比较有意思的点在于可以用栈的方式进行实现,但是由于博主目前学习的数据结构主要是由c语言进行编写,所以在使用栈的时候需要引入栈的相关函数和一些结构体的定义。
题目的具体思路比较简单,将左括号放入堆栈,同时进行字符指针s++,如果遇到右括号则与栈顶的括号进行比较,如果不匹配,则为false,如果匹配则左括号出栈,接着重复步骤继续运行直至*s == '\0’时停止循环,如下:
循环结束后,返回true,另外我们需要考虑字符串里的两种情况:
① “}}”:这种情况进入循环体的时候,栈为空,无法执行StackPush命令,所以进入循环体的时候需要使用StackEmpty函数来判断是否栈为空。
②"{{":这种情况会导致出循环体的时候,栈不为空,所以直接返回true是错误的,出循环体的时候我们需要用if条件语句来判断*s是否为‘\0’,然后在使用StackEmpty函数即可。
代码如下:
2.用队列实现栈
同样需要c语言自己造一个轮子来实现队列。
这里提供的思路是用两个队列实现栈的功能,其中应用双队列的目的是为了解决出栈的问题,将非空队列的值导入空队列直至非空队列只剩队尾的时候,执行QueuePop(出队列)即可,如下:
代码如下: