第三章学习小结

在上学期学习C++和计概时就对栈和队列有所了解,而这两周的学习加深了我对这两个内容的理解。

 

栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。简要来说便是“先进后出,后进先出”。而其又蕴含了顺序栈和链栈两种形式。

本次的作业中就有一项“括号匹配”是栈的应用,因为栈先进后出的特性,适用于检测就近匹配的成对出现的符号。
从第一个字符开始扫描,遇到普通字符时忽略,遇到左符号时压入栈,遇到右符号时弹出栈顶元素进行匹配。如果匹配成功,所有字符扫描完毕并且栈为空;如果匹配失败,所有字符扫描完成但栈非空。

同时递归与栈的问题也是本次课的一个重点,通常递归定义的数学函数,具有递归特性的数据结构,和递归求解的问题常常会用到递归方法,如上学期所学习的hanoi塔问题。

 

队列作为一种线性表,只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,同时队列也是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头

循环队列中,可利用课本中只使用MAXSIZE-1个元素空间的方法判断栈空栈满。

链队其实就是线性表的单链表,但只能尾进头出。一般将队头指针指向链队的头结点,而队尾指针指向终端结点。

同时,老师讲课中提到的调用函数前判断栈空栈满,队空队满,可使程序在实践中更为实用,比课本中的讲解更为简便。

 

本周学习了很多,对栈和队列的学习的同时也复习了第二章的内容。但是这两周的学习过程中因为其他活动的原因,对学习的时间分配较少,与老师的交流中老师也强调了这一点。因此接下来的学习中务必要安排好时间的分配,不能再DDL就要到的时候才匆匆解决作业。

 

posted @ 2019-03-31 17:19  Marshall·Wayne  阅读(95)  评论(2编辑  收藏  举报