“数据结构”是计算机科学与技术专业、软件工程专业甚至于其它电气信息类专业的重要专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程的开发,都是重要而必备的基础。
程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学员学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。
通过本课程的学习,学生将基本掌握数据结构和算法基础知识、算法设计与分析的技术和方法,提高程序设计的质量;能够根据问题的性质,选择合理的数据结构,并对时间复杂性进行必要的控制,培养解决实际问题的能力。为后续相关课程的学习和以后从事相关的研究和开发工作打下扎实的基础。
本课程成绩满分100分。由以下部分构成:
线上学习时长和测试20分
线下考试和作业80分
学过一门编程语言,具有一定编程基础,即可理解主要内容,因为数据结构本质上是不依赖于编程语言的。但由于算法描述多用类似C语言的伪码,且“小白系列”仅讲解C语言的算法实现,所以如果学过C语言会更容易接受。
1、教材
《数据结构》(C语言版),严蔚敏、吴伟民编著,清华大学出版社,2019年6月
2、推荐教辅和资料:
(1)《数据结构与算法》,廖明宏,郭福顺等编著,高等教育出版社,
(2)《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2016年6月
(3)《数据结构学习与实验指导(第2版)》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等育出版社,2019年7月
3、课程练习网站:
拼题A(Programming Teaching Assistant):https://pintia.cn/ 本课程的编程练习将在这里布置。
PAT(Programming Ability Test)官网:https://www.patest.cn/ 提供全部考试真题与报名入口。
0。我应该怎么设置账号开始学习呀?
答:同时在两个窗口登录拼题A和中国大学MOOC,进入拼题A用户名下的“个人中心”找“我的绑定”,点击“绑定中国大学MOOC”,妈妈再也不用担心你学完了没成绩啦!然后继续在“个人信息”中输入本学期的“邀请码”,就可以“应邀做题”啦~
1。我不是计算机专业的,能学这门课吗?
答:只要会写程序就能学。
2。我数学不好,能学这门课吗?
答:会算术就可以了…… 有个别例子涉及基础数学概念(比如什么是多项式),花一分钟上网搜索一下定义就可以搞定。
3。我不会写程序,能学这门课吗?
答:不能…… 还是先学会写程序再说吧~ 隔壁翁恺老师的C语言讲得很好懂,推荐~
4。学这门课每周要花多少时间?
答:平均4-8小时,开始可能轻松一点,后面的课业会越来越重 —— 这样你才能长进嘛~
常见问题
*为什么我的程序得到了“返回非零”?
返回零表示一个程序正常结束,如果没有返回零,则系统认为程序没有正常结束,这时即便输出了正确的内容也不予通过。
C 或 C++ 代码请确认 int main 函数最终会返回 0,不要声明为 double main 或者 void main
有异常的语言,请确认程序处理了可能抛出的异常
*程序的时间和内存占用是如何计算的?
程序的运行时间为程序在所有 CPU 核占用的时间之和,内存占用取程序运行开始到结束占用内存的最大值。
*为什么同样的程序运行时间和所用内存会不同?
程序运行时间会受到许多因素的影响,尤其是在现代多任务操作系统以及在使用动态库的情况下,多次使用同一输入运行同一程序所需时间和内存有一些不同是正常
现象。我们的题目给出的运行限制一般为标准程序的若干倍,也就是说,选用正确的算法和合适的语言,那么运行限制是富余的。
*不同语言的时间限制和内存限制是相同的吗?
是相同的,我们认为选择合适的编程语言也是一项必备技能,所以没有为不同语言设置不同的限制条件。