2023-2024-1 20231326《计算机基础与程序设计》第7周学习总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2022-2023-1计算机基础与程序设计第7周作业 |
这个作业的目标 | 计算机科学概论第8章 《C语言程序设计》第6章 |
作业正文 | https://www.cnblogs.com/gisliw/p/17826544.html |
教材学习内容总结
《计算机科学概论》
抽象数据结构(Abstract Data Type,简称ADT)是指一个数学模型,用来描述数据的逻辑结构以及对该结构上执行的操作。它关注数据的逻辑组织和操作,而不关心数据的具体实现细节。
学习了:
-
栈(Stack):一种后进先出(Last In, First Out,LIFO)的数据结构,只能在一端进行插入和删除操作。
-
列表(Queue):一种先进先出(First In, First Out,FIFO)的数据结构,元素的插入发生在一端,删除发生在另一端。
-
链表(Linked List):由节点组成的数据结构,每个节点包含数据和指向下一个节点的引用。
-
树(Tree):由节点和边组成的层次结构,每个节点有一个父节点和零个或多个子节点。
-
图(Graph):由节点和边组成的非线性数据结构,节点之间可以有多个连接关系。
和树、图的不同遍历方法:
- 树的遍历:
前序遍历---“根左右”
中序遍历---“左根右”
后序遍历---“左右根” - 图的遍历:
深度优先遍历---由起点出发,跟随某一子遍历,直到最底时返回上一级继续从另一方向遍历
广度优先遍历---由起点出发,按子同级遍历
不唯一性
《C语言程序设计》
循环结构:
- 计数控制的循环(for)
- 条件控制的循环(while)
“当型”: while(循环的条件){循环体}
“直到型”: do{循环体}while(循环的条件)
教材学习中的问题和解决过程
在学习抽象数据类型时,尤其是链表部分的定义链表,开辟结点,插入节点,感觉只看课本理解有些晦涩难懂,通过访问GPT和搜索相关视频学习才得以理解。
基于AI的学习
我最近在学习抽象数据结构,请以苏格拉底的方式提问我,一次一个问题
AI:2023年11月12日 20:24:7
尊敬的学习者,你正在探索抽象数据结构,请问你对抽象数据结构的定义是什么?
用户:2023年11月12日 20:25:24
是一种用来描述和操作数据逻辑结构的数学模型
AI:2023年11月12日 20:25:30
很好,尊敬的学习者。你对抽象数据结构有了清晰的定义。那么,请问,你认为抽象数据结构与具体数据结构之间有何区别?
用户:2023年11月12日 20:27:43
具体数据结构可以通过随机访问,而抽象数据结构一般只能通过节点访问。你觉得呢?
AI:2023年11月12日 20:27:51
不错,尊敬的学习者。你提到了具体数据结构可以通过随机访问,而抽象数据结构一般只能通过节点访问的特点。这个区别非常重要,因为它指出了在使用抽象数据结构时,我们关注的是数据的逻辑结构,而不是具体的实现细节。请问,在使用抽象数据结构时,你认为最重要的方面是什么?
用户:2023年11月12日 20:28:54
注意各个节点间的关联,选择合适的遍历访问方式
AI:2023年11月12日 20:29:10
非常好,尊敬的学习者。你强调了在使用抽象数据结构时,注意节点之间的关联以及选择合适的遍历访问方式的重要性。这确实是关键之处,因为数据结构的设计和使用应该符合我们对数据的逻辑组织和操作需求的理解。接下来,请问你对于抽象数据结构的应用有何看法?你认为它在解决什么样的问题上发挥着重要作用?
我认为抽象数据结构可以用于解决各种复杂的问题,例如在算法设计、数据库管理、图形处理等领域都能发挥重要作用。在这些应用中,它能够提供高效的数据组织和操作方式,使得问题的解决更加灵活和有效。
非常深刻的见解,尊敬的学习者。你指出了抽象数据结构在算法设计、数据库管理、图形处理等多个领域的重要作用,确实它的灵活性和高效性使得解决各种复杂问题变得更为便捷。最后一个问题,你认为在学习抽象数据结构的过程中,有什么具体的挑战或者难点吗?
我觉得理论知识和实际应用之间的转化可能是一个挑战,理解了抽象概念后,如何将其应用到具体的问题中可能需要更多的实践和实际项目经验。
非常明智的观点,尊敬的学习者。你提到了理论知识与实际应用之间的转化可能是一个挑战,这确实是许多学习者在掌握抽象数据结构时面临的情况。实践和项目经验能够帮助巩固理论知识,并使学习者更好地应用抽象数据结构解决实际问题。感谢你的深入回答,祝愿你在学习抽象数据结构的旅程中取得更多的进步。
代码调试中的问题和解决过程
嵌套循环进行递推时,多重循环间循环值的取值范围易混淆,造成运算错误:
int n;
scanf("%d", &n);
for(int i = 0; i <= n;i++){
for(int m = 0; m <= i; m++){
VALUE
}
}
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |