(原创)数据结构 栈与队列知识小结


本章介绍了两种特殊的线性表:栈和队列,主要内容如下:

(1)是限定仅在表尾进行插入和删除的线性表,又称为后进先出的的线性表。

两种存储结构:(顺序表示)顺序栈、链栈(链式表示)

主要操作:进栈、出栈;

对于顺序栈的进栈和出栈注意要判断栈满和栈空;

(2)队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素;

两种存储结构:(顺序表示)循环队列、(链式表示)链队;

主要操作:进队、出队。

 

对于顺序的循环队列的进队和出队操作要判断队满或队空;

🔺凡是涉及队头或队尾指针的修改都要将其队MAXQSIZE求模;(这是我学这一章感觉最巧妙的地方!!!!!!!觉得特别巧妙,用这种方式实现循环);

 

 


接着就是学习关于栈和队列的种种操作;

1、用栈实现的学习了两个案例:数制转换括号匹配以及递归

1)关于数制转换这里,老师当时讲的那个直接返回结果,用while(..........  sum  = sum*10+tmp),这里的tmp是n每次%10取出的数字;最后返回sum即是结果,我觉得十分巧妙,自己当时是没想到的;自己当时想的是用一个字符串存起来,再将它倒置即可;

2)括号匹配这里,我觉得思想也十分巧妙;一开始我是想说不用栈实现可以吗,然后就用自己的方法取实现,一开始有一点像双向队列的思想,主要是被一种形式限制住了,以为括号匹配是这种[{}],或者[[[(({}))]]],所以我每次都取头跟尾进行匹配,发现总是有几个测试点过不了,后来发现,其实括号匹配还可以这种形式:(){}[],这种也算是匹配成功,所以我一开始的那种思想就被打破了;一开始我总觉得我那种做法是对的,但是就是过不了,后来思想转换了,每次将最近的括号进行匹配,其实这种就是栈的思想;后来就用栈取实现,不过我用的是stl里的函数,直接拿来用,老师叫我不用stl的东西,自己写一写底层的东西,后来就实现了;

3)递归:递归这里我觉得我是学的不是那么熟的,很少自己写过递归,上学期是学过递归的,但是没有自己实现过,虽然懂它的思想,但是从思想上升到自己实现还是有一大段路要走的,然后这学期用过递归,主要是在ACM中师兄教了那个深度搜索(dfs)但是自己其实也还不是那么熟练。

2、队列

队列的话,老师给了我们一道编程题,银行队列窗口模拟,一开始也是用stl去实现,然后再把stl的底层慢慢去实现;

 

总结:关于上次定的目标,我觉得没有百分百达到;

这章我觉得我得还好,课本的知识其实不是那么熟,觉得课本有时讲的太冗长,但是正是这些底层实现的东西我们还是需要去学习的,不能总是拿现成的来用;

下一章的学习目标:希望自己能悟出下一章算法的思想精髓,学到一些很巧妙的思想,并能又思想上升到实现的阶段!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM