# 20162312 2017-2018-3 《程序设计与数据结构》第5周学习总结
教材学习内容总结
学习目标
-
数据结构
-
抽象数据类型
-
用链表和数组实现栈
-
栈和数组以及链表的结合使用。
-
链表
-
链表栈、数组栈
-
栈的示意图
- 栈的基本运算
(1)InitStack(S)
构造一个空栈S。
(2)StackEmpty(S)
判栈空。若S为空栈,则返回TRUE,否则返回FALSE。
(3)StackFull(S)
判栈满。若S为满栈,则返回TRUE,否则返回FALSE。
注意: 该运算只适用于栈的顺序存储结构。
(4)Push(S,x)
进栈。若栈S不满,则将元素x插入S的栈顶。
(5)Pop(S)
教材学习中的问题和解决过程
-
问题1:不是很理解抽象数据类型
-
问题1解决方案:在网上查资料了解到:抽象数据类型(ADT)是指一个数学模型及定义在该模型上的一组操作。它仅取决于其逻辑特征,而与计算机内部如何表示和实现无关。比如整型,各个计算机,都有“整型”类型,也需要整形运算,那么整型其实就是一个抽象数据类型。
-
问题2:书上哨兵节点描述过于抽象,不是很理解
-
问题2解决方案: 在网上查找了相关的解释:
假设某个漆黑的夜晚,诸位在海岸的悬崖边上玩一个游戏。诸位站在距悬崖边缘100米的地方,地上每隔1米就任意放1件物品。请找出这些物品中有没有苹果。诸位每前进1米就要捡起地上的物品,检查是否拿到了苹果,同时还要检查有没有到达悬崖的边缘(不检查的话就有可能掉到海里),也就是说要对这两种检查反复若干次。使用了哨兵以后,就要先把起点挪到距悬崖边缘101米的地方,再在悬崖的边缘放置一个苹果。这个苹果就是哨兵,通过放置哨兵,诸位就一定能找到苹果了。每前进1米只需检查检验到的物品是不是苹果就可以了。发现是苹果以后,只需站在原地再检查一步开外的情况。如果还没有到达悬崖边缘,就意味着找到了真正要找的苹果。已经达到了悬崖边缘,则说明现在手中的苹果是哨兵,而没有找到真正要找的苹果。
作者:知鉴
链接:https://www.zhihu.com/question/27155932/answer/76553044
错题及总结(活动未结束,暂时无法看具体解析)
代码托管
结对及互评
本周结对学习情况
-
结对学习内容
- 讨论了结点类等知识点
思考
学习还需要进一步深化
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 6/6 | |
第二、三周 | 403/403 | 2/3 | 14/20 | |
第4、5周 | 1452/1855 | 2/5 | 8/28 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:8小时
-
实际学习时间:9小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)