DS第3章学习小结
- 你对本章内容的小结
- 完成作业或实践时解决困难的经验分享
- 这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
- 目前学习过程中存在的困难,待解决或待改进的问题
- 上次博客确定的目标达到了吗?如果没达到,请分析原因
- 接下来的目标
一、你对本章内容的小结
第3章主要学习了栈和队列
栈是一种后进先出(LIFO)的线性表,而队列是一种先进先出(FIFO)的线性表
栈只允许对栈顶进行操作,而队列只允许对队尾和队头进行操作
栈和队列的引入简化了程序设计的问题,划分了不同的关注层次,使思考范围缩小了,而不用像数组那样关注下标等的细节问题
栈的基本操作有:
InitStack(&S)、StackEmpty(S)、GetTop(S)、Push(&S,e)、Pop(&S)
队列的基本操作有:
InitQueue(&Q)、QueueEmpty(Q)、GetHead(Q)、EnQueue(&Q,e)、DeQueue(&Q)
还学了栈与递归,递归负责解决本层问题,一般的算法框架为
void p(参数表)
{
if (递归终止条件) 直接求解;// 递归终止
else p(较小的参数);// 递归求解
}
递归的优点:结构清晰,程序易读
缺点:时间开销大
二、完成作业或实践时解决困难的经验分享
‘\b’代表退格但是和按下退格键不一样,它只是移动当前的光标向前移动一位,所以在pta做题时
不可以像我下面这样,若是这样做了,答案肯定是错的!!!
1 for(int i=0; i<n; i++) 2 { 3 cout<<data[i]<<" "; 4 } 5 cout<<'\b';
三、这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
https://www.cnblogs.com/wft1990/p/5861529.html
这个博客介绍了各种输入流的用法和不同,有时候做题时出现 “以......标志着输入结束” 可能会用到。
四、目前学习过程中存在的困难,待解决或待改进的问题
对一些算法进行具体实现的时候还是不太能得心应手,有时候写的算法有点乱,也不够结构化、层次化。
五、上次博客确定的目标达到了吗?如果没达到,请分析原因
达到了吧,老师给的高质量c++编程指南1~30页看了,课程也基本听懂了?
虽然那1~30页说的都是平时打代码时的一些很基础的习惯,但我还是觉得很有用,写程序规范化一点能使程序更容易读嘛~
六、接下来的目标
以后的算法都要结构化,划分不同的关注层次,尽量简化程序设计的问题。
看老师给的高质量c++编程指南31~60页。