3-10(栈的习题和队列的实现)
16lz
2021-03-11
今天主要学习了栈的习题和队列的链表实现
1、栈具有栈顶和栈底,栈顶是数据的进入和输出端,top是栈顶的上一位,栈的实现可以用链表和数组来实现,但是链表的尾插和尾删复杂度过高,所以用数组更好。
2、习题:有效的括号如:() {()} {([])}
思想:
利用栈的先进后出的特性,首先遍历字符串,遇到左边的括号就进栈,然后遇到右边的就比较,比喻遇到'}',就把栈顶元素读出来,如果一样,依次读取栈中元素来和字符串比较,如果进栈的和字符串剩下的都是左右关系,那就是true,需要注意,比较结束时,栈中元素得为空,且比较开始时,栈不能为空,这些都得注意。
3、队列
队列具有先进先出的特点,具有队头和队尾,可以用数组和链表来实现,但是数组的头删时间复杂度过高,所以不适用,因此选用链表更加合适。
链表来实现队列,需要2个结构体:
一是链表的结构,
struct QueueNode
{
int data;
struct QueueNode next;
};
二是队列的结构
struct Queue
{
struct stackNode Front;
struct stackNode* Back;
};
更多相关文章
- 2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-
- C语言通过定义结构体UCI读写配置文件
- 五款Python图像处理工具!Python入门分享!
- 话说 AQS
- 2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如
- 面试懵了:StringBuilder为什么线程不安全
- Kafka评传——从kafka的消息生命周期引出的沉思
- 从数组中移除元素,要求时间复杂度为O(N)空间复杂度为O(1)
- 顺序表