********2019-2020-1 《数据结构与面向对象程序设计》第七周学习总结
教材学习内容总结
栈与链表:
栈的概念、特点、应用:
栈的概念:
栈可以定义为只允许在表的末端进行插入和删除的线性表。允许插入和删除的一端被称为栈顶,而另一端则被称为栈底。当栈中没有任何元素时,被称为空栈。
e.g:假设有栈S={a1,a2,a3,…,an},那么最后加入栈中的元素an被称为栈顶。进栈按照顺序a1,a2,…,an,出栈则按照an,an-1,…a1。若an-1需要出栈,则必须先将an出栈.
栈的特点:
先进后出
e.g:
作业本的叠放、水杯杯口的取放
顺序栈示意图:
链式栈示意图:
顺序栈与链式栈的比较:
顺序栈使用一组地址连续的存储单元依次从栈底到栈顶的元素,物理位置和逻辑位置关系一致,访问时间为O(1),压栈和出栈的时间消耗均为O(1)。但是需要预先分配存储空间,故可能存在扩容的问题,扩容时数组的移动会造成O(n)的性能消耗
链式栈是动态分配存储空间,不存在扩容问题,压栈和出栈的时间消耗为O(1),所以推荐使用链式栈来实现栈功能
栈的应用:
十进制转N进制、行编辑器、校验括号是否匹配、中缀表达式转后缀表达式、表达式求值等
链表:
链表概念:
链表是一种最为简单的数据结构,它的主要目的是依靠引用关系来实现多个数据的保存,那么下面假设现在要保存的数据是字符串(引用类型),则可以按照图所示的关系进行保存。
上周考试错题总结
上周莫得考试
代码调试中的问题和解决过程:
1、泛型
- 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
- Object是所有类的积累,范围更广,泛型T在使用的的时候就会具体到某一种类型
- Object定义的类型在使用过程中需要强转,这就需要我们预先知道是什么类型,编译器不会检查Object类型的强转错误,只有在运行时才会抛出;泛型T的类型在编译期间就会进行检测,它的类型转换是自动的,隐式进行的
2、Stack双括号
- 解决过程:我认为双括号的问题大概在于当进行PUSH操作时将整个数组PUSH而不是将其内部的值进行PUSH
- 解决方案:使用循环将数组进行分开赋值。
代码托管
代码托管
结对及互评
点评
- 博客中值得学习的:
- 教材学习内容概括行强,简介明了。
- 有自己动手打新代码,加入了很多个人的理解。
- 内容很充实,很用心,比上次进步了很多。
- 博客格式正确,运用了很多不同的方法,排版精美。
- 希望能在课本内容总结以及问题&解决过程中加入自己的思考,使博客内容更加充实。
基于评分标准,我给本博客打分12分:
得分情况如下:
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程(加2分)
代码调试中的问题和解决过程(加2分)
其他加分(加6分)
进度条中记录学习时间与改进情况(1)
感想,体会不假大空(1)
有动手写新代码(1)
错题学习深入(1)
点评认真,能指出博客和代码中的问题(1)
结对学习情况真实可信(1)
点评过的同学博客和代码
- 本周结对学习情况:
- [20182316]
其他(感悟、思考等,可选)
单步调试真香啊
参考资料
ㅤ | 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | ㅤ |
第一周 | 138/138 | 2/2 | 23/23 | 减少了鼠标的使用次数 |
第二周 | 749/887 | 1/4 | 25/48 | |
第三周 | 765/1652 | 1/4 | 25/48 | |
第四周 | 694/2346 | 1/6 | 20/87 | |
第五周 | 1659/4005 | 1/8 | 21/105 | |
第六周 | 531/4536 | 1/9 | 23/128 | |
第七周 | 1523/6059 | 1/10 | 38/166 |