第3章学习小结

一、内容小结:

第三章主要学习栈与队列的定义和特点,了解到栈是后进先出的线性表,而队列是先进先出的线性表。

1.栈:

顺序栈链栈的表示和实现:1.初始化 2.入栈 3.出栈  4.取栈顶元素  

栈是后进先出的线性表,所以我们在需要按照保存数据时相反的顺序来使用数据时,用栈来实现会比较方便。

除了初始化之外,顺序栈在实现入栈操作时,需要判断栈满,在实现出栈操作时则需要判断栈空,栈满和栈空都可以用定义的栈底指针及栈顶指针表示。链栈需要注意的是初始化时,栈顶指针要置空,否则为野指针,无法申请内存区域。

在讨论2时有实现递归的,使用递归的优点是结构清晰易读,缺点是时间开销大,容易重复子问题,可能会增加时间复杂度。

2.队列:

顺序列的表示和实现分为: 1.初始化 2.求队列长度  3.入队 4.出队  5.取顶头元素  

链队的表现和实现分为: 1.初始化 2.入队 3.出队 4.取队头元素

关于队列有在网上查了相关问题:顺序队列会出现假溢出的问题,队列所用的存储区没有满,但队列却发生了溢出,对于这种情况,我们可以定义循环队列,通过取余将头尾连接,于是我们可以用:(Q.rear+1MAX==Q.front判断队满。链队一般也要定义头结点,定义头结点可以保证处理不同个数数据时的操作都一致,入队在队尾操作,出队在队头操作。

二、作业总结

1.括号匹配:

看完题目后没有认真理解题意,导致走了不少弯路,再加上编写代码的能力不够,花费了大量时间模仿一个我其实并不理解的思路。经多方查询后才真正理解了如何用栈实现这个问题。

2.银行业务队列

这道题就像排队,先排的人先走,因此很容易能想到用队列实现,题目中奇数与偶数需要被分到不同的位置,因此需要定义两个队列,将奇数和偶数分别按顺序分配到两个队列,再以输出两个奇数一个偶数的顺序实现程序。 

做题时思路模糊,不清楚如何实现,总是一边写一边考虑下一部分应该做什么,所以应该明确每一步要做什么以后再具体实现每一个步骤ADT,同时还是要增强编程能力,做题之前理解很重要,独立思考也很重要。希望下一次编写代码时能高效一些,避免浪费时间,找到对的方法做题。

上一章明显花的时间不够多,对于一些必要的步骤不熟悉,还经常在细节方面没有注意到。在下个阶段中,注意合理分排时间,对于概念和代码要足够上心,该记的要记住,切忌三天打鱼,两天晒网。

 

posted @ 2020-04-26 11:46  黄颖芳  阅读(134)  评论(0编辑  收藏  举报