学期(如2024-2025-1) 学号(如:20241403) 《计算机基础与程序设计》第7周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业) |
这个作业的目标 | 数组与链表 基于数组和基于链表实现数据结构 无序表与有序表 树 图 子程序与参数 |
作业正文 | https://www.cnblogs.com/chenqiqi/p/18537314 |
教材学习内容总结
一、数组与链表
- 数组:
• 是一组具有相同数据类型的元素的集合,在内存中连续存储。
• 可以通过索引快速访问特定元素,但插入和删除元素可能需要移动大量元素,效率较低。
• 适用于需要频繁随机访问元素的场景。
- 链表:
• 由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
• 插入和删除元素相对容易,只需修改指针即可,但随机访问元素需要遍历链表,效率较低。
• 适用于频繁进行插入和删除操作的场景。
二、基于数组和链表实现数据结构
- 基于数组实现:
• 可以实现栈、队列等数据结构。例如,用数组实现栈时,可以利用数组的一端作为栈顶,进行入栈和出栈操作。
• 优点是实现简单,随机访问快;缺点是可能浪费空间,插入和删除效率低。
- 基于链表实现:
• 同样可以实现栈、队列等数据结构。例如,用链表实现队列时,链表的一端作为队首,另一端作为队尾,进行入队和出队操作。
• 优点是灵活,插入和删除效率高;缺点是实现相对复杂,随机访问慢。
三、无序表与有序表
- 无序表:
• 表中的元素没有特定的顺序。
• 插入元素时,只需将元素添加到合适的位置即可,无需考虑顺序。
• 查找元素时,需要遍历整个表,效率较低。
- 有序表:
• 表中的元素按照一定的顺序排列。
• 插入元素时,需要找到合适的位置插入,以保持顺序。
• 查找元素时,可以利用顺序进行高效的查找,如二分查找等。
四、树
- 定义与结构:
• 树是一种非线性数据结构,由节点和边组成。
• 最顶层的节点称为根节点,没有子节点的节点称为叶节点。
• 节点之间的关系可以用父子关系来描述。
- 二叉树:
• 每个节点最多有两个子节点的树。
• 可以进行遍历操作,如前序遍历、中序遍历和后序遍历。
• 常用于搜索和排序等场景。
五、图
- 定义与结构:
• 图是由顶点和边组成的非线性数据结构。
• 边可以有方向和权重。
• 图可以分为有向图和无向图。
- 应用场景:
• 常用于网络路由、社交网络分析、地图导航等领域。
六、子程序与参数
- 子程序:
• 也称为函数或方法,是一段可以独立执行的代码块。
• 可以接受参数,进行特定的操作,并返回结果。
- 参数传递:
• 形参是在定义子程序时使用的参数,仅在子程序内部有效。
• 实参是在调用子程序时传递给子程序的具体数值或变量。
• 参数传递可以是值传递或引用传递。
教材学习中的问题和解决过程(先问 AI)
- 问题1:在基于链表实现栈的数据结构中,入栈和出栈操作的时间复杂度是多少?
- 问题1解决方案:在基于链表实现栈时,入栈操作只需要在链表头部插入一个节点,时间复杂度为 O(1)。出栈操作也只需要删除链表头部的节点,同样时间复杂度为 O(1)。
因为链表的插入和删除操作在头部进行时,只需要修改指针,不需要移动大量元素,所以时间复杂度较低。
基于AI的学习
代码调试中的问题和解决过程
- 问题1:用pow(n,1/3)表示=n的三分之一次方,结果确实一直是1
- 问题1解决方案:应改为pow(n,1.0/3.0)或pow(n,1.0/3)或pow(n,1/3.0)因为1/3的结果是0,在c语言中1和3都是整形,结果也应该是整形,所以是0;当把其中一个改为浮点数后结果也就不再是整形了。
其他(感悟、思考等,可选)
我有时候还是会犯一些语法错误,这就需要多加练习来弥补。学习c语言是一个循序渐进地过程,须要不断积累。
有些题目须要很强的数学能力,这方面我还是有所欠缺。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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 |