第三章学习总结

Posted butterboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章学习总结相关的知识,希望对你有一定的参考价值。

第三章 栈和队列

本章我们学习了线性结构的另外两种表现形式:栈和队列。

:只限定仅在表尾进行插入或删除的线性表。表尾段称作栈顶,表头端称作栈底,它的修改原则是后进先出,用于按照保存数据时的相反顺序来使用数据。类似于我们生活中放书拿书,最后叠上去的最早被抽出来。

队列:是一种先进先出的线性表,它只允许在表的一段进行插入,而在另一端删除元素。允许插入的一段称为队尾,允许删除的一段称为队头。它类似于我们生活中排队买东西,先来的先买,先输入的数据先输出。

接下来谈谈我在做作业时所遇到的问题。

括号匹配问题

一开始没能将栈的知识与题目进行联系,简单来说就是一脑懵逼。后来经过老师上课和书本上的提示,了解了大致的算法。于是创建栈、初始化栈、运用while循环和switch函数,遇到左括号压入栈(Push),遇到右括号就进行匹配。然后我结合书本没有定义获取栈顶元素的函数GetTop,而是直接输出栈顶元素(用Pop函数,返回一个char类型的字符),将flag赋值为1,进行匹配后成功则跳出循环,不成功将flag赋值为0,最后用if判断栈是否为空或者flag是否为1,并按要求输出yesno,基本问题不大。

银行排队问题

虽然题目看起来很复杂,但它实际上就是入队和出队另一种表现。我用了循环队列的形式,一样的定义顺序结构,初始化循环队列、输入元素输出元素。唯一有一些头疼的地方就是,由于要定义两个队列AB,输出顺序有所不同,首先要考虑AB两个队列都不为空的情况,这时候判断条件为:while((QA.front!=QA.rear)&&(QB.front!=QB.rear)&&(QA.rear-QA.front)%1000>=2),两次A队出队,一次B队出队,之后还要考虑B为空A不为空,判断条件:

 while(QA.front!=QA.rear)A为空B不为空:while(QB.front!=QB.rear),将依次输出的数字放到新定义的数组中去,最后将数组输出即可。

经过作业和实践,我对链表的使用也更加清晰,对数据结构的真实含义有了更进一步的理解:数据结构是把我们之前所学过的最基本的语法进行叠加改造,最后组成一个功能更强的语句,便于我们解决后续更多复杂的问题,实现更复杂的算法。

以上是关于第三章学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20165233 Java第三章学习总结

《机器学习》第三章 决策树学习 笔记加总结

第三阶段学习总结

第三阶段学习总结

数据结构第三章学习总结

《数字图像处理》第三章学习总结感悟2:直方图处理