① 内容小结:
栈和队列的表示和操作的实现
栈:
栈的顺序表示及链表表示和实现
(从数据结构来看,栈和队列也是特殊线性表——运算受限的线性表)
在栈的表示和操作的实现的学习中,了解了两种栈——顺序栈以及链栈,分别学习了两种栈的表示和实现,如基本操作的实现——初始化、入栈、出栈、取栈顶元素……
需要注意的是:在进行入栈、出栈、取栈顶元素这些操作前,都要判断栈的状态,即空或者满,符合要求才能继续进行操作。
而后学习了递归算法,了解了其是如何“跑”起来的。
顺序栈和链栈的主要区别在于其使用的存储结构,即顺序表与链表
其主要区别和优缺点在于链式表可以将很多零碎的空间利用起来,而顺序表查找方便,链式表插入和删除时很方便。
队列:
循环队列以及链队的表示和实现
在这部分的学习中,了解了两种队列——循环队列以及链队,分别学习了两种队列的表示和实现,如基本操作的实现——初始化、求队列长度、入队、出队、取队列头元素……
为何在队列部分其顺序表表示需要用到循环结构呢?
主要是因为队列“先入先出”的特殊性,先入队的数据如果需要出队,其占用的空间则已经空置,但由于采用顺序表这种存储结构,这部分空置的空间无法被利用,所以采用了循环结构。
需要注意的是:和栈相似,在进行入队、出队、去队列头元素这些操作前,都要判断队列的状态,即空或者满,符合要求才能继续进行操作。
且若使用循环链队,由于需要区分队空和队满,一般会少用一个元素空间。
② 完成作业或实践时的心得体会
多使用网络,看看其他人写的代码,了解别人的一些思路,结合自己的想法,去把程序完成。
看完别人的代码后,一定要自己独立打一遍,这样才能巩固基础,这样的知识才是属于自己的
在完成一道题目一个程序前,应该思考得更全面些,操作分模块写函数,而不是把全部内容都放在main函数里,草草写完整个程序之后,发现有很多bug,再填窟窿式的改代码,这样不仅不易改动,还容易造成思维混乱,有时候甚至要整个程序重写
③ 参考资料
参考了CSDN及博客园的文章
如:https://blog.csdn.net/u011630575/article/details/79735350
https://blog.csdn.net/qq_35989000/article/details/79978164
https://ask.csdn.net/questions/214869
https://blog.csdn.net/qq_33965121/article/details/85275253
④
上次的目标算是完成了一部分
现在慢慢习惯算法的抽象表示了
加深了对指针这部分内容的理解
但是还未能熟练使用链表,需要继续努力
⑤ 目标
熟练运用链表
写程序时,前期思考更全面,多分模块写函数,避免把所有操作都写在main函数中,写代码时思路更清晰。