当前位置:课程大纲

课程大纲

  • 学习目标
  • 内容大纲

学习目标

通过本课程的学习,使学生了解面向对象分析、设计和实现的过程和基本方法,通过理论与实践相结合,使学生理解并掌握面向对象程序设计的基本方法和技术。以C++程序设计语言为工具,通过数据抽象的方法,研究数据的逻辑结构、存储结构及相应的算法。为信息类非计算机专业学生建立数据结构和算法设计的基本概念,为后续编程课程奠定基础。

各章学习目标

章名称

学习目标

第1章 面向对象的设计方法

(1)掌握熟悉面向对象的思想;
(2)理解面向对象的基本概念: 对象和类;
(3)掌握面向对象的基本特性:封装性、继承性和多态性;
(4)掌握C++比C增强的知识:函数原型与变量说明、输入输出、const说明符和void类型。

第2章 C++类及其对象的封装性

(1)掌握类的定义和使用方法。
(2)掌握对象的定义和使用方法;
(3)掌握对象的存储空间及成员函数的存储方式;
(4)掌握构造函数对对象初始化;
(5)析构函数执行与构造函数相反的操作;
(6)new申请存储空间,delete释放用new申请的存储空间。

第3章 友元、重载和引用

(1)掌握友元的概念;掌握友元函数、友元成员和友元类;掌握友元的声明和定义;
(2)掌握重载是C++的多态性;掌握函数重载有构造函数重载、成员函数和非成员函数重载;运算符重载的形式;
(3)掌握引用就是对象的别名,对引用的操作就是对目标的操作,用引用传递参数可改变实参的值,用引用传递对象对象可节省内存,引用函数可被赋值。

第4章 继承与派生

(1)理解类的继承与派生;
(2)重点掌握在不同继承方式下派生类从基类继承成员的访问属性;
(3)掌握多继承的概念和定义,多继承构造函数的定义与执行顺序,注意多继承的二义性;
(4)掌握虚基类的定义,以及最远派生类的构造函数的定义。

第5章  多态性与虚函数

(1)重点掌握对象指针;
(2)理解虚函数的概念以及如何用虚函数实现多态;
(3)掌握抽象类的使用;
(4)虚析构函数的使用。

第6章  模版

(1)理解模板的概念;
(2)掌握函数模板的定义和使用;
(3)掌握类模板的定义和使用;
(4)理解数据类型的参数化。

第7章 数据结构概述与 线性表

(1)掌握数据结构的基本概念;
(2)熟练掌握线性表的逻辑结构特性;
(3)熟练掌握顺序存储结构和链式存储结构的描述方法;
(4)掌握线性表各种基本操作的实现。

第8章  堆栈与队列

(1)熟练掌握堆栈和队列的逻辑结构特性;
(2)理解顺序队列中的假溢出问题以及循环队列的引入;
(3)熟练掌握顺序栈和链式栈、循环队列与链式队列的描述方法;
(4)掌握顺序栈和链式栈、循环队列与链式队列的主要基本操作实现方法。

第9章  树

(1)理解树、森林和二叉树的基本概念;掌握树型结构的特点;
(2)掌握树和二叉树的二叉链表表示;熟练掌握树和二叉树、森林和二叉树的转换;
(3)掌握树和二叉树的各种遍历方法及应用;
(4)理解二叉排序树的概念;熟练掌握二叉排序树的建立、插入和删除方法;
(5)掌握赫夫曼树的构造方法及其应用。

第10章  图

(1)了解图的相关术语;
(2)理解图的存储结构;
(3)熟练掌握图的遍历方法(深度优先搜索、广度优先搜索);
(4)了解最小生成树的概念,并掌握求最小生成树的普里姆算法与克鲁斯卡尔算法。

第11章 查找

(1)理解查找的相关概念;
(2)掌握静态查找表的定义及操作;
(3)掌握顺序查找,折半查找及索引顺序表的查找;
(4)了解二叉排序树的概念;
(5)掌握二叉排序树的构造、插入结点和删除结点的算法;
(6)了解散列表的相关概念和构造散列函数的基本方法,理解冲突及其处理的基本方法。

第12章 排序

(1)理解排序的相关概念;
(2)理解插入排序的基本思想;
(3)掌握直接插入排序、折半插入排序、希尔排序的算法;
(4)掌握快速排序的方法;
(5)理解选择排序的基本思想;
(6)掌握堆排序的方法。

内容大纲

本课程理论教学要点、重难点如下:

知识模块

教学要点

重点难点

学时分配

第1章 面向对象的设计方法

1、面向对象的基本概念和基本特性
2、C++的初步知识

重点:面向对象的思想、面向对象的基本概念、面向对象的基本特性;C++比C增强的知识。
难点:面向过程程序设计与面向对象程序设计的区别;C++比C增强的知识。

3

第2章  C++类及其对象的封装性

1、类的声明和对象的定义
2、构造函数与析构函数
3、对象指针与动态存储

重点:类的定义和使用方法;对象的定义和使用方法;构造函数和析构函数。
难点:动态存储。

4

第3章  友元、重载和引用

1、友元
2、重载
3、引用

重点:友元的概念和使用方法;重载的概念和使用方法;引用的概念和使用方法。
难点:运算符重载;引用的概念和应用。

4

第4章  继承与派生

1、派生类的声明方式与构成
2、派生类成员函数的访问属性
3、派生类的构造函数和析构函数
4、多继承与虚基类

重点:在不同继承方式下派生类从基类继承成员的访问属性。
难点:构造派生类对象时,构造函数的执行顺序。

6

第5章  多态性与虚函数

1、多态性
2、虚函数
3、纯虚函数与抽象类

重点:虚函数的概念;如何用虚函数实现多态。
难点:抽象类的使用;虚析构函数的使用。

4

第6章  模版

1、函数模版和模版函数
2、类模版和模版类

重点:函数模版和模版函数的定义以及使用方法;
难点:函数模版的重载。

3

第7章  数据结构概述与线性表

1、数据结构基本概念与抽象数据类型
2、线性表的基本概念
3、抽象链表类
4、单链表

重点:掌握数据结构基本概念,算法的设计方法和算法分析的方法,顺序存储和链式存储两类存储结构的描述方法,以及线性表的各种基本操作的实现;
难点:链式存储结构。

4

第8章  堆栈与队列

1、堆栈的概念及其运算
2、栈的抽象类及成员函数
3、顺序栈与链式栈
4、队列的概念及其运算
5、队列的抽象类及成员函数
6、顺序队列与链式队列

重点:掌握顺序栈、链栈循环队列、链式队列的定义与操作;堆栈和队列线性表的逻辑结构特性。
难点:顺序栈和链式栈、循环队列与链式队列的描述方法及其基本操作的实现 。

4

第9章  树

1、树和二叉树的基本概念
2、树和树的存储结构
3、树的抽象类
4、树的遍历和树的遍历
5、叉排序树
6、曼树及其应用

重点:树和二叉树的二叉链表表示;树和二叉树、森林和二叉树的转换;树和二叉树的各种遍历方法及应用;二叉排序树的建立、插入和删除;掌握赫夫曼树的构造。
难点:二叉树的遍历及应用;二叉排序树的建立、插入和删除。

6

第10章  图

1、图的基本概念
2、图的存储结构
3、图的遍历
4、图的连通性与最小生成树

重点:掌握图的基本概念、图的存储结构、图的遍历、图的连通性与最小生成树、普里姆算法与克鲁斯卡尔算法。
难点:深度优先搜索算法、广度优先搜索算法、无向图的生成树及其算法(Prim算法和Kruskal 算法)。

4

第11章  查找

1.静态查找表,重点介绍顺序表的查找,有序表的查找
2.动态查找表,重点介绍二叉排序树
3.哈希表

重点:掌握查找表的概念、顺序查找,折半查找及索引顺序表的查找、二叉排序树的概念及相关操作、哈希函数的构造方法及处理冲突的方法。
难点:判断树的概念、折半查找、二叉排序树的插入、删除操作、哈希表的查找与分析方法。

3

第12章  排序

1、插入排序
2、快速排序
3、选择排序

重点:掌握直接插入排序算法、折半插入排序算法、希尔排序快速排序、简单选择算法、堆排序的方法。
难点:希尔排序的算法、快速排序的算法、堆排序的算法。

3

本课程实验教学如下

序号

实验名称

实验学时

实验一

C++类及其对象的封装性

2

实验二

友元、重载和引用

2

实验三

继承与派生

2

实验四

多态性和虚函数

2

实验五

线性表

2

实验六

堆栈与队列

2

实验七

树与二叉树

2

实验八

排序

2