第三章学习小结

①    内容小结:

栈和队列的表示和操作的实现

栈:

栈的顺序表示及链表表示和实现

(从数据结构来看,栈和队列也是特殊线性表——运算受限的线性表)

 

在栈的表示和操作的实现的学习中,了解了两种栈——顺序栈以及链栈,分别学习了两种栈的表示和实现,如基本操作的实现——初始化、入栈、出栈、取栈顶元素……

 

需要注意的是:在进行入栈、出栈、取栈顶元素这些操作前,都要判断栈的状态,即空或者满,符合要求才能继续进行操作。

 

而后学习了递归算法,了解了其是如何“跑”起来的。

 

顺序栈和链栈的主要区别在于其使用的存储结构,即顺序表与链表

其主要区别和优缺点在于链式表可以将很多零碎的空间利用起来,而顺序表查找方便,链式表插入和删除时很方便。 

 

队列:

循环队列以及链队的表示和实现

在这部分的学习中,了解了两种队列——循环队列以及链队,分别学习了两种队列的表示和实现,如基本操作的实现——初始化、求队列长度、入队、出队、取队列头元素……

 

为何在队列部分其顺序表表示需要用到循环结构呢?

主要是因为队列“先入先出”的特殊性,先入队的数据如果需要出队,其占用的空间则已经空置,但由于采用顺序表这种存储结构,这部分空置的空间无法被利用,所以采用了循环结构。

需要注意的是:和栈相似,在进行入队、出队、去队列头元素这些操作前,都要判断队列的状态,即空或者满,符合要求才能继续进行操作。

且若使用循环链队,由于需要区分队空和队满,一般会少用一个元素空间。

 

②    完成作业或实践时的心得体会

多使用网络,看看其他人写的代码,了解别人的一些思路,结合自己的想法,去把程序完成。

看完别人的代码后,一定要自己独立打一遍,这样才能巩固基础,这样的知识才是属于自己的

 

在完成一道题目一个程序前,应该思考得更全面些,操作分模块写函数,而不是把全部内容都放在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函数中,写代码时思路更清晰。

posted @ 2019-03-31 17:37  Berlinsss  阅读(137)  评论(2编辑  收藏  举报