《数据结构与算法》是软件工程、计算机及相关专业重要的专业基础课程。作为软件工程专业的核心课程,本课程所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其他课程,还是对从事软件系统的开发,都有着不可替代的作用,本课程不仅为《数据库系统原理与实践》、《操作系统》、《算法分析与设计》、《软件构造》、《计算机网络》等后继课程提供必要的知识基础,同时也为理论研究与工程应用的专业人员提供必要的技能训练。通过本课程的学习,完成知识学习和技能培养两方面的任务:
1. 知识方面:从数据结构及其实现的角度,系统地学习和掌握基本数据结构及其实现方法,理解并掌握分析、选择和设计数据结构、存储结构以及算法的基本原则和方法,为后继课程的学习打下良好的知识基础。
2. 技能方面:通过对本课程的知识传授、算法设计和上机实践的训练,培养学生的数据抽象能力、算法抽象能力和计算思维能力,提高分析问题和解决问题的能力,提高运用程序设计语言解决实际问题的能力,进而提高学生设计高质量软件的能力。
第一章 绪论(3学时)
教学内容:问题求解与程序设计;数据结构的基本概念;算法的基本概念;算法分析。
选讲内容:算法分析的其他渐进符号。
第二章 线性表(6学时)
教学内容:线性表的逻辑结构;线性表顺序存储结构及实现;线性表链接存储结构及实现;顺序表和链表的比较。
选讲内容:线性表的静态链表存储;顺序表的动态存储分配。
第三章 栈和队列(4学时)
教学内容:栈的逻辑结构;栈的存储结构及实现;队列的逻辑结构;队列的存储结构及实现。
选讲内容:两栈共享空间;双端队列。
第四章 字符串和多维数组(4学时)
教学内容:字符串的逻辑结构和存储结构,模式匹配算法;数组的逻辑结构、存储结构及寻址;特殊矩阵和稀疏矩阵的压缩存储方法。
选讲内容:稀疏矩阵的转置算法;广义表。
第五章 树和二叉树(9学时)
教学内容:树的逻辑结构;树的存储结构;二叉树的逻辑结构;二叉树的存储结构及实现;树、森林和二叉树之间的转换;哈夫曼树及哈夫曼编码。
选讲内容:二叉树遍历的非递归实现;线索二叉树,堆与优先队列;并查集。
第六章 图(9学时)
教学内容:图的逻辑结构;图的存储结构及实现;最小生成树;最短路径;有向无环图。
选讲内容:图的其他存储方法;图的连通性。
第七章 查找技术(5学时)
教学内容:查找的基本概念及算法性能;线性表的查找技术;树表的查找技术;散列表的查找技术;各种查找方法的比较。
选讲内容:分块查找;插值查找;B+树。
第八章 排序技术(8学时)
教学内容:排序的基本概念及算法性能;插入排序;交换排序;选择排序;归并排序;各种排序算法的比较。
选讲内容:排序问题的时间下界;基数排序。