内容小结:
第三章学习了两种特殊的线性表—栈和队列,其中包括:
1.栈和队列的定义和特点:
①栈是限定仅在表尾进行插入或删除操作的线性表,元素后进先出(LIFO),而队列是限定在表头删除、表尾插入的线性表,元素先进先出(FIFO);
2.栈和队列的两种存储结构以及其基本操作:
①利用循环队列,避免了“假溢出”问题,需要注意凡是涉及队头或队尾指针的修改操作都要对其进行模运算,比较特殊;
②顺序结构的栈和队列需要注意每次插入元素时空间是否为满,删除元素时空间是否为空;
3.递归算法:
①学习了汉诺塔问题,了解到栈在算法中如何提供工作栈来保存工作记录、从而实现递归;
②根据递归公式来求解问题,分为自底向上和自顶向下两种求解方法,前者由迭代实现,后者由递归实现,但需要注意重复子问题的情况。
心得体会:
1.PTA:在理解基本操作和慕课视频辅助下,基本上没有什么问题。最大的感触是使用STL库好方便!
①括号匹配:注意题目里的字符输入是包括空格的,因此输入是使用getline函数实现,getline函数终止符为‘/0’。
②银行队列:由于对循环队列理解不深,总是输出0和无意义数字,后来检查自己的代码,发现是因为出队操作误取出了队尾元素_(:з」∠)_。以后要更加仔细一点检查代码,避免...这类低级错误发生。
2.分组讨论-绕弯查询:我们小组选择顺序表来实现代码,但是起初陷入了误区,想用编号来替换下标,研究如何将字符串转换成数字(查到的资料太高深),后来转换思路,运用temp存储上次查询的最终位置和break退出当前查询循环来减少查询次数。这些小技巧在平时可能都不太会关注,但在提高效率上挺实用的。
上一阶段目标完成情况:
巩固了顺序表和链表的相关操作,但对于循环链表等一些特殊链表可能还是有点生疏……
接下来的目标:
巩固之前学习的栈和队列的相关操作,继续努力学习接下来的第四章知识(? •_•)?。
原文:https://www.cnblogs.com/Function-F/p/12781217.html