第三章小结
第三章学习了栈和队列。
有一个要搞清楚的点是 栈和队列的每一次操作都只对一个元素起作用。之前在学习计概这门课的时候,就已经接触了栈和队列的知识,知道LIFO和FIFO结构。但是没有学太深。
现在知道了栈和队列的作用以及一些基本的算法和主要操作。
总结:
(1)顺序栈与链栈
主要操作:1.InitStack(SqStacke &S)(初始化)2.Push(SqStack &S,SElemType e)(入栈)3.Pop(SqStack &S,SElemType &e)(出栈)4.判断栈空栈满
if(S.top==S.base) return ERROR;(判断栈空)
if(S.top-S.base==S.stacksize) return ERROR;(判断栈满)
链栈不用判断栈满
(2)循环队列(顺序队列)与链队
主要操作:1.InitQueue(SqQueue &Q) (初始化)2.EnQueue(SqQueue &Q,QElemType e)(入队) 3.DeQueue(SqQueue &Q,QElemType &e)(出队)
4.判断队空队满
if(Q.front==Q.rear) return ERROR;(判断队空)
if((Q.rear+1)%MAXSIZE==Q.front) return ERROR;(判断队满)
在入栈,入队前先判断是否栈满,队满
在出栈,出队前先判断是否栈空,队空
在做括号匹配这道题时,我一开始没有思路,还是在老师讲了之后才做出来的。而且我之前没有思路,也没有积极的去查资料什么的,所以就放着。下次就要先自己锻炼自己的思考能力,这样才能提高能力。
然后实践题还没有完全做对。但是我有思路要怎么做。后来看到课本的舞伴问题,我先把它理顺了,分成奇数队列和偶数队列,将输入判断后分别入队奇数队列和偶数队列,然后在按题目要求的奇数两个,偶数一个的这种插空输出,将奇数队列的元素出队,偶数队列的元素出队,再入队到一个新的队列里,再按输出要求出队新队列。因为没有考虑到奇数队列多一点或偶数队列多一点的情况,所以错误。以我的水平,也并不是一下子,就能写出它的实现,我参考了别人博客的代码,https://blog.csdn.net/lml_l_l/article/details/79350932,才完成了实现。还有一个错误待解决。
学习困难:就是在学习链栈的时候和链队的时候有点难记,理清楚它的算法 并很好地运用这种。
解决:看书时间投入不够多,所以要在课前多预习以及复习。
学习目标:上个星期的目标课堂效果吸收还算好,就是自己的投入还不够。在老师的帮助理清思路与实现后,括号匹配那道题其实没有花太多时间,比以前的效率高很多。所以算完成一半。剩下的是长期的坚持了。就是下次,我能提前动手做做作业,先仔细想想,做题时能有较清晰地思路过程。然后碰到不能解决的问题能积极的问,在课堂上听课的同时跟上老师的思路,课后复习要做好。