一、课程背景
1.1 C重要吗?
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言
1.2、为什么要学习数据结构?
在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件:
一、能够熟练地选择和设计各种数据结构和算法。
二、至少要能够熟练地掌握一门程序设计语言。
三、熟知所涉及的相关应用领域的知识。
其中,后两个条件比较容易实现,而第一个条件则需要花相当的时间和精力才能够达到,它是区分一个程序设计人员水平高低的一个重要标志,数据结构贯穿程序设计的始终,缺乏数据结构和算法的深厚功底,很难设计出高水平的具有专业水准的应用程序。曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,也说明了数据结构和算法的重要性。
1.3、为何要选择学习这个课程?
数据结构用C去表述是经典的,也是更能让你得到良好的基础编程思想算法训练的,也是容易上手的。 本课程系可谓是 《 数据结构(C语言版)--严蔚敏 》 的视频版本。
讲师梧桐拥有丰富的授课经验和开发经验,对数据结构有深入的研究,并曾发表论文。讲师的授课特点是用通俗易懂的话来说清晦涩难懂的知识点。
1.4. 、适合学员
本课程适合
1. 有一定C语言基础想学习数据结构算法的学员,有机会进入名企从事IT领域的在校大学生
2. 想提高自己的软件编程能力,想去冲击更高职位,更高收入的有理想的程序猿
二、课程大纲
第1章 绪论
一、教学内容
1.1 数据结构的相关基本概念
1.2 数据之间的逻辑结构
1.3 数据之间的存储结构
1.4 算法
二、教学要求
1、了解数据结构的基本概念
2、掌握算法的时间复杂度
第2章 线性表
一、教学内容
2.1 了解线性表的特点
2.2 顺序表及其相关操作
2.3 链表及其相关操作
二、教学要求
1、了解线性表的特点
2、掌握链表及其相关操作
第3章 栈和队列
一、教学内容
3.1 两种重要的特殊的线性结构:栈和队列
3.2 栈的特点
3.3 队列的特点
3.4 算法
二、教学要求
1、了解栈的特点
2、了解队列的特点
第6章 树和二叉树
一、教学内容
6.1 二叉树的定义
6.2 二叉树的性质
6.3 二叉树的存储结构
6.4 二叉树的遍历
6.5 树的存储结构
6.6 森林与二叉树的转换
6.7 树的遍历
6.8 森林的遍历
6.9 哈夫曼树及其应用
二、教学要求
1、掌握二叉树的性质
2、熟悉二叉树的遍历
3、掌握哈夫曼树的构造
第7章 图
一、教学内容
7.1 图的定义及相关术语
7.2 图的存储结构
7.3 图的两种遍历方式
7.4 小生成树
7.5 关键路径
二、教学要求
1、了解图的存储结构和遍历
2、掌握关键路径的计算
第9章 查找
一、教学内容
9.1 顺序查找
9.2 折半查找
9.3 二叉排序树
9.4 哈希表的构造
9.5 处理冲突的方法
二、教学要求
1、掌握折半查找的思想和算法
2、了解哈希表的构造和处理冲突的方法
第10章 内部排序
一、教学内容
10.1 直接插入排序
10.2 希尔排序
10.3 冒泡排序
10.4 快速排序
10.5 简单选择排序
10.6 总结各种排序方法
二、教学要求
1、掌握直接插入排序的思想和算法
2、了解希尔排序的思想
3、掌握冒泡排序的思想和算法
4、了解快速排序的思想
5、了解简单选择排序的思想