今天主要学习了栈的习题和队列的链表实现
1、栈具有栈顶和栈底,栈顶是数据的进入和输出端,top是栈顶的上一位,栈的实现可以用链表和数组来实现,但是链表的尾插和尾删复杂度过高,所以用数组更好。
2、习题:有效的括号如:() {()} {([])}
思想:
利用栈的先进后出的特性,首先遍历字符串,遇到左边的括号就进栈,然后遇到右边的就比较,比喻遇到'}',就把栈顶元素读出来,如果一样,依次读取栈中元素来和字符串比较,如果进栈的和字符串剩下的都是左右关系,那就是true,需要注意,比较结束时,栈中元素得为空,且比较开始时,栈不能为空,这些都得注意。
3、队列
队列具有先进先出的特点,具有队头和队尾,可以用数组和链表来实现,但是数组的头删时间复杂度过高,所以不适用,因此选用链表更加合适。
链表来实现队列,需要2个结构体:
一是链表的结构,
struct QueueNode
{
int data;
struct QueueNode next;
};
二是队列的结构
struct Queue
{
struct stackNode Front;
struct stackNode* Back;
};