数据结构教案

数据结构教案
数据结构教案

课程简介

人们在运用程序设计语言编写程序的过程中发现所有的数据都可以抽象为三种结构,而对这些数据的所有操作都可以转化为对这三种数据的几种基本操作,而大多数的程序设计技巧都可以抽象为一些最基本的算法。于是人们逐步发展了一门称为数据结构(或数据结构与算法)的计算机科学,它广泛应用于计算机领域。

数据结构是信息与计算专业的核心基础课程之一。数据是计算机处理的对象,本课程研究的数据是非数值性、结构性的数据。学习本课程要求掌握各种主要数据结构的特点、计算机内的表示方法,以及处理数据的算法,对于算法所花费的时间和空间代价的分析也要求有一定程度的了解和掌握。通过本课程的学习,使学生透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养基本的良好的程序设计能力。本课程主要包括如下三个方面的内容:

1.基本数据结构:线性表、栈、队列、串、数组和广义表,掌握它们的特点、表示和实现,对静态结构要求非常熟练的编程上机实现,对动态结构要求逐步熟悉链表的表示,通过模仿实验教程中的例子,掌握编程技巧。强调类C语言的书写规范,特别注意参数的区别,输入输出的方式和错误处理方式,以及抽象数据类型的表示和实现。能熟练完成以下的应用:多项式的计算、语法检查、回朔算法、递归算法、表达式求值、离散事件模拟、文字的编辑和稀疏矩阵进行矩阵运算采用的处理方法。

2.复杂数据结构:树、二叉树、图。掌握它们的定义和特点、表示和实现,特别注意与基本数据结构的区别,掌握各种遍历的递归和非递归算法,能熟练完成以下的应用:最优树、Huffman编码、拓扑排序、关键路径和最短路径问题。

3.数据结构的应用:查找和内部排序。熟练掌握静态查找表的查找方法和实现,了解哈希表的构造和查找方法。掌握各种内部排序方法的基本思想、算法特点、排序过程以及它们的时间复杂度分析。

《数据结构》教学大纲

课程名称:数据结构

课程编号:014100028 适用专业:计算机、信息管理

总学时数:60 学分数: 4

一、课程的性质、目的与任务

数据结构是计算机科学技术、信息管理等专业的核心课程之一,是一门理论与工程实践密切相关的综合性课程,在计算机学科教学中具有十分重要的作用。大力加强数据结构课程的建设,提高数据结构课程的教学质量,有利于教学改革和教育创新,有利于高级应用型人才和创新人才的培养。

《数据结构》课程是计算机专业的专业基础课程,介绍计算机领域的常用数据结构以及各种查找和排序的算法,是计算机专业学生必修的一门技术基础课程,也是计算机专业的核心课程。数据结构是计算机专业的一门重要的专业基础课,主要解决数据的表示和数据的处理,系统介绍三大数据结构及其实现,为操作系统等课程提供必要的知识基础,为计算机人员提供必要的基本技能。

二、课程教学基本要求

本课程介绍常用数据结构之间的逻辑结构、存储结构和对其施加的运算,如:线性表、栈、队列、串、数组、广义表、树、图等。同时还介绍各种查找和排序的算法。

通过本门课程的学习,应使学生掌握以下几个方面的知识:

1:系统学习常用基本数据结构及其在不同存储方式下的实现,掌握分析、选择不同的数据结构和存储结构的原则和方法。

2:学习和掌握在各种存储结构上实现的各种算法及其设计思想,从而学习各种分析问题和解决问题的能力。

3:掌握各种算法的时空效率的分析方法,学会在实际应用中选择合适的算法。

4:掌握各种查找和排序的算法以及效率,并将其应用在程序设计中。

三、课程教学内容体系

第一章:概论

1.1 什么是数据结构

1.2 基本概念和术语

1.3 抽象数据类型的表现与实现

1.4 算法和算法分析

教学要求:理解数据、数据元素、数据项的概念;掌握逻辑结构和存储结构的关系;理解算法的基本概念;学会分析算法的时间复杂性和空间复杂性。

第二章:线性表

2.1 线性表的类型定义

2.2 线性表的顺序表示和实现

2.3 线性表的链式表示和实现(静态查找表不讲)

2.4 一元多项式的表示及相加

教学要求:理解线性表的定义和特点;掌握顺序表和链表的特点,掌握在这两种存储结构上各种基本运算的实现算法以及效率的分析,并学习在这两种存储结构上进行算法设计的方法;以达到利用基本算法进行较复杂算法设计的目的。

第三章:栈、队列

3.2 栈的应有和举例

3.2.1 数制转换

3.3.4 迷宫求解

3.3 栈与递归的实现

3.4 队列

教学要求:理解栈和队列的定义、特点,学习它们的各种组织方式及算法;掌握它们的空和满的判断条件;并学会它们的简单应用。

第四章:串

4.1 串类型的定义

4.2 串的表示和实现

4.2.1 定长顺序存储表示

4.2.3 串的块链存储表示

4.3 串的模式匹配算法

4.3.1 求字串位置的定位函数

教学要求:了解串的概念,掌握串的基本运算,学习串运算在不同存储结构下的实现过程。

第五章:多维数组和广义表

5.1 数组的定义

5.2 数组的顺序表现和实现

5.3 矩阵的压缩存储

教学要求:领会数组的定义,数组的两种顺序存储结构,并领会几种特殊矩阵和稀疏矩阵的压缩存储方法。

第六章:树

6.1 树的定义和基本术语

6.2 二叉树

6.2.1 二叉树的定义

6.2.2 二叉树的性质

6.2.3 二叉树的存储结构

6.3 遍历二叉树和线索二叉树

6.3.1 遍历二叉树

6.4 树和森林

6.4.1 树的存储结构

6.4.2 森林与二叉树的转换

6.4.3 树和森林的遍历

6.6 赫夫曼树及其应用

6.6.1 最优二叉树(赫夫曼树)

6.6.2 赫夫曼编码

教学要求:理解树型结构的概念和术语,领会二叉树的定义、形态、性质和存储结构,掌握二叉树的各种遍历算法极其实现过程,了解树和森林及其相互转换;掌握哈夫曼树极其应用。

第七章:图

7.1 图的定义和术语

7.2 图的存储结构

7.2.1 数组表示法

7.2.3 十字链表

7.2.4 邻接多重表

7.3 图的遍历

7.3.1 深度优先搜索

7.3.2 广度优先搜索

7.4 图的连通性问题

7.4.1 无向图的连通分量和生成树

7.4.3 最小生成树

7.5 有向无环图及其应用

7.5.1 拓扑排序

7.5.2 关键路径

7.6 最短路径

7.6.1 从某个源点到其余各顶点的最短路径

教学要求:理解图型结构的概念和术语,掌握图的邻接矩阵和邻接表两种存储形式,理解图的遍历的基本思想,掌握图的两种遍历的方法和其实现的过程,学会图在最小生成树、拓扑排序、最短路径、关键路径中的应用。

第九章:查找

9.1 静态查找表

9.1.1 顺序表的查找

9.1.2 有序表的查找

9.1.4 索引顺序表的查找

9.3 哈希表

9.3.1 什么是哈希表

9.3.2 哈希函数的构造方法

9.3.3 处理冲突的方法

教学要求:掌握查找表的定义和分类,熟练掌握顺序查找和二分查找的思想,了解二叉排序树及其查找,了解散列查找的思想和有关方法。

第十章:内部排序

10.1 概述

10.2 插入排序

10.2.1 直接插入排序

10.2.2 其他插入排序(表的插入排序不讲)

10.2.3 希尔排序

10.3 快速排序

10.4 选择排序

10.4.1 简单选择排序

10.5 归并排序

教学要求:熟练掌握各种排序方法的思想和特点,如:插入排序、交换排序、选择排序、分配排序等,学会分析它们的优点和缺点以及时空性能,并学会选择和应用各种排序方法解决实际问题。

四、学时分配

五、推荐教材及教学参考书

1. 教材

《数据结构》;严蔚敏编著;清华大学出版社

2. 教学参考书

《算法与数据结构(C语言版)》,范策等编著,机械工业出版社,2004

《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

《数据结构实用教程(第二版)》,徐孝凯编著,清华大学出版社2006

《数据结构辅导与提高实用教程(第二版)》,徐孝凯,清华大学出版社2003

《数据结构》,谢楚屏等,人民邮电出版社,2001

《算法与数据结构-C语言描述》,张乃孝等,高等教育出版社,2002

《数据结构》,殷人昆,清华大学出版社,2001

《计算机算法设计与分析》,苏德富,电子工业出版社,2001

《算法与数据结构》,傅清祥,王哓冬,电子工业出版社,1998

《数据结构-C++与面向对象的途径》,张乃孝,裘宗燕,高等教育出版社,2001

《数据结构-用面向对象方法与C++描述》,殷人昆等清华大学出版社

《算法设计与分析》,梁田贵,张鹏编著,冶金工业出版社,2004

六、考核办法和成绩评定标准

根据教学要求进行期末考试,由任课教师根据完成情况进行评定,并最终结合平时成绩的考核给出综合成绩。

制定:

制定日期:

教案(首页)

教学进程:

计算机的应用不再局限于科学计算,更多地用于控制,管理,数据处理等非数值计算的处理工作。计算机加工处理的对象:数值,字符,表格,图形声音,图象等具有一定结构的数据。进行程序设计时必须分析待处理的对象的特性及各对象之间存在的关系———产生背景。

1.1 什么是数据结构

1.2 数据结构的基本概念和术语

1. 数据(Data)

2. 数据元素(Data Element)

3. 数据对象(Data Object)

4. 结构(Data Structure)存储结构、抽象数据类型

抽象数据类型 (Abstract Data Type)

ADT的定义格式不唯一, 我们采用下述格式定义一个ADT:

ADT 抽象数据类型名{

数据对象: <数据对象的定义>

数据关系: <结构关系的定义>

基本操作: <基本操作的定义>

}ADT 抽象数据类型名

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

教学进程:

1.3 抽象数据类型的表示和实现

1.4 算法

1. 算法(Algorithm)的定义

Algorithm is a finite set of rules which gives a sequence of operation for solving a specific type of problem. (算法是规则的有限集合,是为解决特定问题而规定的一系列操作。) 是指令的有限序列,其中每一条指令表示一个或多个操作。

2. 算法的特性

3. 算法设计的要求

1)算法的正确性

(1) 所设计的程序没有语法错误;

(2) 所设计的程序对于几组输入数据能够得出满足要求的结果;

(3) 所设计的程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得到满足要求的结果。

(4) 程序对于一切合法的输入数据都能产生满足要求的结果。

2)可读性

3)健壮性

4)高效率和低存储量、算法、语言和程序的关系

时间复杂度

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

章节第2章线性表:2.1 线性表的类型定义2.2 线性表的顺序表示

教学目的

教学要求

理解线性表的定义和特点;掌握顺序表以达到利用基本算法进行较复杂算法设计的目的。

教学重点难点教学重点:线性表的定义和特点;线性表的顺序表示教学难点:线性表的顺序表示

教学进程(含章节教学内容、学时分配、教学方法、辅助手段)教学进程:

线性结构的特点:

在数据元素的非空有限集中,

?存在唯一的一个被称为“第一个”的数据元素;

?存在唯一的一个被称为“最后一个”的数据元素;

?除第一个元素之外,集合中的每个元素均只有一个前驱;

?除最后一个元素之外,集合中的每个元素均只有一个后继。

2.1 线性表的类型定义

2.1.1 线性表的逻辑结构

2.1.2 线性表的抽象数据类型定义

2.2 线性表的顺序表示和实现

2.2.1 线性表的顺序存储结构

2.2.2 线性表顺序存储结构上的基本运算

1. 初始化操作

2. 插入操作

3. 删除操作

算法2.1

算法2.3

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业1:算法2.1、图2.2、算法2.4 2:算法2.5、算法2.6

主要参考资料《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004 《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总结分析

备注

章节第2章:2.3 线性表的链式表示和实现(1)

教学目的

教学要求

理解线性表的链表的特点,掌握在这种存储结构上各种基本运算的实现算法以及效率的分析,并学习在这种存储结构上进行算法设计的方法;以达到利用基本算法进行较复杂算法

设计的目的。

教学

重点

难点

教学重点:线性表的链式表示和实现;

教学难点:单链表的插入、删除、查找和归并操作;

教学进程

(含章节

教学内容、

学时分配、

教学方法、

辅助手段)

教学进程:

2.3 线性表的链式表示和实现

2.3.1 单链表

线性表的链式存储:

图2.6 单链表的逻辑状态

图2.7 带头结点单链表图示

2.3.2 单链表上的基本运算

1. 建立单链表

2. 查找

3. 单链表插入操作

4. 删除

5.合并单链表:

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业

1:图2.5、图2.8、图2.9

2:算法2.8、算法2.9、算法2.10、算法2.11

主要

参考资料

《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004

《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总

结分析

备注

章节第2章:2.3 (2)2.4 一元多项式的表示及相加

教学目的

教学要求

理解线性表的链表的特点,掌握在这种存储结构上各种基本运算的实现算法以及效率的分析;掌握一元多项式的表示及相加的方法与算法。

教学重点难点教学重点:循环链表、双向链表及其算法;一元多项式的表示及相加的方法与算法;教学难点:双向链表及其算法、一元多项式相加的方法;

教学进程(含章节教学内容、学时分配、教学方法、辅助手段)教学进程:

2.3.3 循环链表

2.3.4 双向链表

1. 双向链表的前插操作

2. 双向链表的删除操作

2.3.6 顺序表和链表的比较

1. 基于空间的考虑、

2. 基于时间的考虑、

3. 基于语言的考虑

2.4 一元多项式的表示及相加

教学方法、课堂讲解、例题演示,课件演示辅助手段:电脑、投影仪、教科书

作业1:图2.12、图2.14、图2.15、图2.16、图2.17、图2.18 2:算法2.18、算法2.19、算法2.23

主要参考资料《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004 《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总结分析

备注

章节第3章栈和队列:3.1 栈、3.2.1 数制转换

教学目的

教学要求

理解栈的定义、特点,学习它的各种组织方式及算法;掌握它的空和满的判断条件;并学会它的简单应用。

教学

重点

难点

教学重点:栈的定义、特点,学习它的各种组织方式及算法;

教学难点:栈的简单应用;

教学进程

(含章节

教学内容、

学时分配、

教学方法、

辅助手段)

教学进程:

3.1 栈

3.1.1 栈的定义

3.1.2 栈的表示和实现

1. 顺序栈

顺序栈基本操作的实现:

(1)初始化、(2) 取栈顶元素、(3) 入栈、(4) 出栈

2. 链栈

3.2 栈的应用举例 1. 数制转换

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业

1:图3.1、3.2

2:P47:栈基本操作的算法描述、算法3.1

主要

参考资料

《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004

《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总

结分析

备注

章节第3章栈和队列:3.2.4 迷宫求解、3.3 栈与递归的实现

教学目的和教学要求

了解迷宫求解的算法思路、了解计算机图形学中的种子填充苏算法;掌握汉诺塔算法及其过程。

教学重点难点教学重点:迷宫求解的算法思路、汉诺塔算法及其过程;教学难点:汉诺塔算法及其过程;

教学进程(含章节教学内容、学时分配、教学方法、辅助手段)教学进程:

4. 迷宫求解(拓展:填充算法)

3.3 栈与递归的实现

1. 递归特性问题

1) 递归函数 2)汉诺塔算法

三个盘子搬动时hanoi(3, A, B, C) 递归调用过程:

hanoi(2,A,C,B):

hanoi(1,A,B,C) move(A->C) 1号搬到C move(A->B) 2号搬到B

hanoi(1,C,A,B) move(C->B) 1号搬到B move(A->c) 3号搬到C

hanoi(2,B,A,C):

hanoi(1,B,C,A) move(B->A) 1号搬到A move(B->c) 2号搬到C

hanoi(1,A,B,C) move(A->C) 1号搬到C 教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业1:图3.7

2:算法3.5、种子填充算法、两种算法求解n!

主要参考资料《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004 《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总结分析

备注

章节第3章栈和队列:3.4 队列

教学目的和

教学要求

掌握队列的数据结构和链队列的相关操作;掌握循环队列的相关内容;

教学

重点、难点

教学重点:列的数据结构和链队列的相关操作;

教学难点:循环队列的相关操作;

教学进程

(含章节

教学内容、

学时分配、

教学方法、

辅助手段)

教学进程:

3.4 队列

3.4.1 队列的定义

队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out,缩写为FIFO)的特性。在队列中,允

许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。

3.4.2 队列的表示和实现

链队列: (1)初始化操作、(2)销毁队列、(3)入队操作、(4)出队操作

3.4.3:循环队列

如何区分队列“空”和“满”

1.另设一个标志位以区分队列是空还是满;

2.少用一个元素空间,当队列头指针在队列尾指针的下一个位置上时为“满”。

当Q.front=Q.rear时队空;Q.front+1=Q.rear时队满

循环队列满足条件 (Q.rear+1)%MAXQSIZE== Q.front 队满

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业

1:图3.8、图3.10、图3.11、图3.14;

2:P62:队列的基本操作算法、P64:循环队列的基本操作算法;

主要

参考资料

《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004

《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总

结分析

备注

教学进程:

4.1 串的定义

串(String)是零个或多个字符组成的有限序列。一般记为:

S= ′a1a2...an′ (n≥0)

4.2 串的表示和实现

4.2.1 定长顺序存储表示串

1.串联接Concat(& T , S1, S2)

2. 求子串SubString ( & Sub , S , pos , len )

4.2.3串的块链存储表示

4.3 串的模式匹配算法

4.3.1 求子串位置的定位函数 Index( S, T ,pos)

int Index (SString S, SString T, int pos )

{ //返回子串T在主串中第 pos个字符之后的位置。如不存在,则函数值为0。其中:T 非空,1<=pos<=Strlength( S )。

i = pos ; j = 1 ;

while ( i<=S[ 0 ] && j<= T[ 0 ] )

{if ( S[i] = = T[j]) { ++ i ; ++ j ;} // 继续比较后续字符

else { i = i – j + 2 ; j = 1 ;} // 指针后退重新开始匹配

}

if ( j> T[ 0 ]) return i - T[ 0 ] ;

else return 0 ;

} // Index 算法:4.5

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

章节第5章数组和广义表:5.1 数组的定义、5.2 数组的顺序表示和实现

教学目的和

教学要求

掌握数组的定义、数组的顺序表示和实现;

教学重点难点教学重点:数组的定义、数组的顺序表示和实现教学难点:数组的顺序表示和实现

教学进程(含章节教学内容、学时分配、教学方法、辅助手段)教学进程:

5.1 数组的定义

数组和广义表可看成是一种特殊的线性表,其特殊在于,表中的数据元素本身也是一种

线性表。

对于数组的操作一般只有两类:

(1)获得特定位置的元素值;(2)修改特定位置的元素值。

5.2 数组的顺序表示和实现

数组一般不做插入和删除操作,因此采用顺序存储结构。由于存储单元是一维结构,而

数组是多维结构,则用一组连续存储单元存放数组的数据元素就有个次序约定问题。

数组的顺序存储结构有两种:一种是按行序存储,另一种是按列序存储。

Loc[i, j]=Loc[1, 1]+n×(i-1)+(j-1)

Loc[i, j, k]=Loc[1, 1, 1]+(i-1)×m×n+(j-1)×n+(k-1) 对于n维数组A(c1∶d1, c2∶d2,…, cn∶dn),我们只要把上式推广,就可以容易地

得到n维数组中任意元素aj1j2…jn的存储地址的计算公式: LOC(aj1j2…jn)=LOC(a00…0)+(b2*b3*…*bn*j1+b3*…*bn*j2+…+bn*jn-1+jn)*l

LOC(aj1j2…jn)= LOC(a00…0)+(= LOC(a00…0)+

其中 cn=L,ci-1=bi*ci

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业计算1-3维数组的任意元素的存储地址;

主要参考资料《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004 《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总结分析

备注

章节第5章数组和广义表:5.3 矩阵的压缩存储 5.3.1 特殊矩阵、5.3.2 稀疏矩阵

教学目的和

教学要求

掌握特殊矩阵和稀疏矩阵的存储方法;掌握稀疏矩阵的转置算法;

教学重点难点教学重点:特殊矩阵和稀疏矩阵的存储方法;稀疏矩阵的转置算法;教学难点:稀疏矩阵的转置算法;

教学进程(含章节教学内容、学时分配、教学方法、辅助手段)教学进程:

5.3 矩阵的压缩存储

压缩存储:为多个值相同的元素只分配一个存储空间,对零元素不分配空间。特殊矩阵:值相同的元素或零元素在矩阵中的分布有一定的规律。稀疏矩阵:矩阵中元素分布没有规律,但零元素较多。

5.3.1 特殊矩阵

三角矩阵大体分为三类:下三角矩阵、上三角矩阵和对称矩阵

Loc[i, j]=Loc[1, 1]+i(i-1)/2+j-1

带状矩阵

5.3.2 稀疏矩阵

方法一:按照b.data中三元组的次序依次在a.data中找到相应的三元组进行转置。

方法二:按照a.data 中三元组的次序进行转置,并将转置后的三元组置入b 中的恰当位置。

教学方法、课堂讲解、例题演示,课件演示

辅助手段:电脑、投影仪、教科书

作业1:下三角、对称、带状矩阵的数据元素的下标地址的计算方法;2:稀疏矩阵的两个转置算法;

主要参考资料《算法与数据结构(C语言版)》,范策,周世平,胡哓琨等编著,机械工业出版社,2004 《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社2004

《数据结构与算法》,许卓群,杨冬青,唐世渭,张铭,高等教育出版社,2004

课后自我总结分析

备注

《数据结构》教学设计方案

《数据结构》教学设计方案 1 课程的一般信息 1.1 教学对象 计算机科学与技术专业2012级本科学生 1.2 课程名称 《数据结构》 1.3 课程教材及分析 1.3.1 中文教材及分析 数据结构(C语言版),严蔚敏,北京:清华大学出版社(国家精品课程配套教材),2011.11。 该教材为国内关于数据结构最知名的教材之一,受到国内计算机教育界广泛的认可。 1.3.2 教材选取的背景 选取本教材的原因主要是受到本人对于该课程的教学改革驱动,在该课程教学中强调实践性,注重理论联系实际。 1.4 课程类型 专业必修课(开设时间为计算机科学学院各专业本科生二年级第一学期) 1.5 教师的基本信息 肖冰,1981年生,博士,讲师,计算机科学学院。主要研究方向为模式识别、机器学习、智能信息处理等。博士毕业后从事一线教学和科研工作,主讲了《计算机基础》、《ACCESS 数据库应用技术》,《数据结构》、《数据库原理与设计》及相关课程设计等课程。在Pattern Recognition(SCI二区)、Neurocomputing(SCI三区)、Signal Processing(SCI三区)、电子学报(中、英文版)等国际、国内权威期刊和会议上发表论文15篇,其中SCI检索6篇,EI检索9篇,在重要期刊上发表教学论文一篇。主持国家博士后科学基金、陕西省博士后科学基金、陕西师范大学中央高校基本科研业务费、西安电子科技大学优秀博士学位论文资助基金、陕西师范大学青年基金各一项,以第三完成人参与国家自然科学基金、博士点基金等多项科研项目。授权专利三项,获得陕西省科学技术奖一等奖(第三完成人)一项,陕西省自然科学优秀学术论文二等奖(第一完成人)一项。 2 该单元的教学目标 2.1 单元内容概要 第9章查找 第3节哈希表

《数据结构》教学纲要(doc 9页)

《数据结构》教学纲要(doc 9页)

《数据结构》教学大纲 2001年9月 一、开课系(部):经济信息管理系 二、教学对象:信息管理与信息系统专业本科 三、教学目的: 数据结构是高等教育计算机信息管理专业中的一门专业基础课,在计算机软件的各个领域中均会使用到数据结构的有关知识。本课程的目的和任务是使学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。 四、教学要求: 1. 从数据结构的逻辑结构、存储结构和数据的运算三个方面去掌握线性表、栈、队列、串、数组、广义表、树、图和文件等常用的数据结构。 2. 掌握在各种常用的数据结构上实现的排序和查找运算。 3. 对算法的时间和空间复杂性有一定的分析能力。 4. 针对简单的应用问题.应能选择合适的数据结构及设计有效的算法解决之。 五、教学课时: 教学内容课内学时 第1章绪论 2 第2章线性表 4 第3章栈和队列 6 第4章串 4 笫5章数组和广义表 4 第6章树和二叉树 6 第7、8章略 第9章查找 4 第10章内部排序 4 课程总复习 2 六、考核形式: 期末考试与平时讨论相结合(80%和20%)。 期末试卷结构: 单项选择填空简答应用算法设计 20 15分20分15分30分

态。 3.3 算法描述和算法分析的方法,对于一般算法能分析出时间复杂度。 第2章线性表 (一)课程内容 2.1 线性表的逻辑结构 2.2 线性表的顺序存储结构 2.3 线性表的链式存储结构 2.4 顺序表和链表的比较 (二)学习目的与要求 本章目的是介绍线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本运算。要求在熟悉这些内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。本章重点是熟练掌握顺序表和单链表上实现的各种基本算法及相关的时间性能分析,难点是能够使用本章所学到的基本知识设计有效算法解决与线性表相关的应用问题。 (三)考核知识点与考核要求 1. 线性表的逻辑结构,要求达到“识记”层次。 1.1 线性表的逻辑结构特征。 1.2 线性表上定义的基本运算,并能利用基本运算构造出较复杂的运算。 2. 线性表的顺序存储结构.要求达到“综合应用”层次。 2.1 顺序表的含义及特点,即顺序表如何反映线性表中元素之间的逻辑关系。 2.2 顺序表上的插入、删除操作及其平均时间性能分析。 2.3 利用顺序表设计算法解决筒单的应用问题。 3. 线性表的链式存储结构,要求达到“综合应用”层次。 3.1 链表如何表示线性表中元素之间的逻辑关系。 3.2 链表中头指针和头结点的使用。 3.3 单链表、双链表、循环链表链接方式上的区别。 3.4 单链表上实现的建表、查找、插入和删除等基本算法,并分析其时间复杂度。 3.5 循环链表上尾指针取代头指针的作用,以及单循环链表上的算法与单链表上相应算法的异同点。 3.6 双链表的定义及其相关的算法。 3.7 利用链表设计算法解决简单的应用问题。 4.顺序表和链表的比较.要求达到“领会”层次。

数据结构教案课程

2015 至2016 学年第二学期 数据结构课程 教 案 课程编码:1261D03 总学时/周学时:80 / 5 开课时间:2016年2 月24日第1 周至第16 周 授课年级、专业、班级:15级网工程2班 使用教材严蔚敏. 数据结构(C语言版)[M] 北京:清华大学出版社,2011.系别/教研室:信息工程学院/ 物联网工程 授课教师:刘波

教学目标: 《数据结构》是物联网工程专业的一门专业必修课。用计算机解决任何问题都需要进行数据表示和数据处理,而数据表示和数据处理正是《数据结构》要研究的内容。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。 通过本课程教学,使学生了解数据结构的基本概念,理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,掌握算法描述及算法的评价标准,熟悉在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会,旨在培养学生基本的、良好的程序设计技能,编制高效可靠的程序,并为学生日后学习操作系统和数据库等后续课程奠定基础。 教学要求: 本课程主要是以抽象数据类型的观点来组织和讲解线性表、栈、队列、树、二叉树、图等各种主要的数学模型并定义为相应的抽象数据类型,给出各种物理表示法和有关算法,关于数据处理技术介绍几种主要的排序和查找算法。 学生通过学习该课程后主要应掌握以下内容: 1.了解数据结构及有关的基本概念; 2.了解各种抽象数据类型的性质; 3.掌握各种抽象数据类型的实现和基本算法; 4.对算法的时间和空间复杂性有一定的分析能力; 5.能够选择适当的数据结构和存储结构以及设计有效的算法,解决实际问题; 6.掌握数据结构在排序和查找等常用算法中的应用。 教学重点: 抽象数据类型、顺序表、单链表、循环链表、栈、队列、数组、特殊矩阵、树和二叉树、最小生成树、拓扑排序、查找、内部排序 教学难点: 单链表、栈、循环队列、特殊矩阵、二叉树、关键路径、最短路径 教学方法与手段: 1.理论部分以讲授法为主,结合讨论及课堂练习实现教学目的。 2.传统教学手段与多媒体等现化手段相结合。 3.重视实验教学,要求学生利用一切可利用的时间和机会去实验室,实现并验证书本上的各种算法,达到真正实现教学目的。 考核与成绩评定方式: 本课程为考试科目,课程结束后采用闭卷考试。考核总成绩中,平时成绩占30%(出勤占10%,实验占10%,书面作业占10%),期末考试占70%;考核范围为教学大纲规定的基本要求教学内容。 教材与主要参考书目: 1.教材 严蔚敏、吴伟民. 数据结构(C语言版)[M] 北京:清华大学出版社,2011.

《数据结构》课程标准.doc

《数据结构》课程标准 适用专业:计算机应用技术、大数据技术 学时:72 前导课程:计算机应用基础、C语言程序设计 一、课程性质 《数据结构》是大数据应用专业的一门专业基础必修课程。本课程面向Android软件工程师的岗位需求,主要讲述集合、线性表、堆栈和队列、树和二叉树、查找和排序等基本数据结构和算法。本课程着重基本知识的掌握和基本技能的训练,为利用c语言进一步处理数据奠定基础。 二、课程理念 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。精心选择的数据结构可以带来更高的运行或存储效率,数据结构往往同高兴的检索算法和索引技术有关。 1、课程地位理念 在许多类型的程序设计中,数据结构的选择是一个基本的设计考虑因素。许多大型的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法随之确定,是数据而不是算法是系统构造的关键因素。 2、课程学情理念 本课程开设在嵌入式系统工程专科第一学期,学生在学习本课程前已具备计算机基础、C语言基础等知识,本课程力图让学生学会在C语言环境下,运用面向对象的思想编写规范的代码,实现经典的数据结构和算法。熟悉常用的数据结构和算法,使学生初步具备一个优秀的软件开发人员所应有的基本能力。 3、课程内容理念 根据本课程的教学目标,确定了课程内容体系结构的五个组成部分:集合结构、线性

表、堆栈和队列、树和二叉树、查找和排序。内容主要包括:绪论、线性表、有序线性表、堆栈、队列、树、二叉树、二叉树的遍历、顺序查找、折半查找、插入排序、选择排序等。 4、课程要求理念 《数据结构》是一门偏重理论的课程,有很强的理论性。在多年的教学研究和教学实践中,《数据结构》形成了独具特色的“七化”教学方法,即教学资源立体化、教师精讲主导化、学生学习团队化、教学过程流水化、程序项目核心化、知识技能点索引化、和C 语言结合化。 5、课程考核理念 如何客观反映出学生对数据结构的理解、掌握、综合应用的实际情况,传统的闭卷考试有不完善的地方,应该对考核内容和形式进行适当的调整,过程评价与终结评价相结合,形成全方位、更加公正客观的评价体系。考核方法采用“N+2”成绩评定方式,采用“课堂考勤+课堂实训练习+期末考试”的方式。 三、课程目标 (一)总目标 为学生的职业素质和职业技能的形成服务;为今后学习大数据处理技术奠定坚实的基础;为IT企业输送高质量的从业者。 (二)分目标 1、知识目标 (1)了解数据结构课程的体系结构,掌握数据结构的基本概念和基础知识。 (2)掌握线性表结构,能够运用C语言实现线性表结构; (3)掌握堆栈和队列以及树和二叉树结构。 (4)掌握查找和排序算法,并且结合项目达到在项目中运用的能力; 2、能力目标 (1)使学生初步具备一个优秀的软件开发人员所应有的基本能力:会编写基本的算法、会利用数据结构解决基础编程语言不能直接表达的数据; (2)为学生利用C进一步研究与学习大数据处理技术奠定基础。 3、情感态度价值观目标 (1)规范意识:让学生学会编写规范代码,熟悉常用程序设计技巧。 (2)团队精神:培养学生的合作精神、协调工作和组织管理的能力。 (3)探究精神:关注学科发展趋势和应用前景,注重培养学生的对新技术的探究精神。

第三章栈和队列习题_数据结构电子教案

习题三栈和队列 一单项选择题 1. 在作进栈运算时,应先判别栈是否(① ),在作退栈运算时应先判别栈是否(② )。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③ )。 ①, ②: A. 空 B. 满 C. 上溢 D. 下溢 ③: A. n-1 B. n C. n+1 D. n/2 2.若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为( )。 A 可能是2 B 一定是2 C 可能是1 D 一定是1 3. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?() A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 4.设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6, s5,s1,则栈的容量至少应该是() A.2 B. 3 C. 5 D.6 5. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。 A. |top[2]-top[1]|=0 B. top[1]+1=top[2] C. top[1]+top[2]=m D. top[1]=top[2] 6. 执行完下列语句段后,i值为:() int f(int x) { return ((x>0) ? x* f(x-1):2);} int i ; i =f(f(1)); A.2 B. 4 C. 8 D. 无限递归 7. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算符栈为(),其中^为乘幂。 A. 3,2,4,1,1;(*^(+*- B. 3,2,8;(*^- C. 3,2,4,2,2;(*^(- D. 3,2,8;(*^(- 8. 用链接方式存储的队列,在进行删除运算时()。 A. 仅修改头指针 B. 仅修改尾指针 C. 头、尾指针都要修改 D. 头、尾指针可能都要修改 9. 递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。 A.队列 B.多维数组 C.栈 D. 线性表 10.设C语言数组Data[m+1]作为循环队列SQ的存储空间, front为队头指针,rear为队尾指针,则执行出队操作的语句为() A.front=front+1 B. front=(front+1)% m C.rear=(rear+1)%(m+1) D. front=(front+1)%(m+1) 11.循环队列的队满条件为 ( ) A. (sq.rear+1) % maxsize ==(sq.front+1) % maxsize; B. (sq.front+1) % maxsize ==sq.rear C. (sq.rear+1) % maxsize ==sq.front D.sq.rear ==sq.front

数据结构专升本模拟题及参考答案讲课教案

作业题(一) 一、单项选择题 1. 从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 2. 链表不具有的特点是() A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 3.下面程序段的时间复杂度的量级为()。 For(i=1;i<=n;i++) For(j=1;j<=I;j++) For(k=1;k<=j;k++) X=x+1; A.O(1) B.O(n) C.O(n2) D.O(n3) 4.在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。 A.2 B.3 C.4 D.6 5、一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。 A.98 B.100 C.102 D.106 6、判定一个栈s(最多元素为m0)为空的条件是()。 A.s-〉top! =0 B.s-〉top= =0 C.s-〉top! =m0 D.s-〉top= =m0 7、循环队列用数组A[m](下标从0到m-1)存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()。 A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D. rear-front 8、设有两个串S1与S2,求串S2在S1中首次出现位置的运算称作()。 A.连接 B.求子串 C.模式匹配 D.判子串 9、设串S1='ABCDEFG',S2='PQRST',函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串S的的从序号i的字符开始的j个字符组成的子串,len(s)返回串S的长度,则con(subs(S1,2,len(S2)),subs(S1,len(S2),2))的结果是()。

数据结构课程(本科)教学设计方案

《数据结构(本科)》课程设计方案导学方案 刘鹏

《数据结构(本科)》 课程设计方案导学方案 一、课程基本说明 课程对象:全国电大系统开放教育试点计算机科学与技术专业(专科起点本科)学生课程学时:72学分 课程学分:4学分 开课情况:从2000年春开始,一直开设至今。课程主讲和主编一直是清华大学殷人昆教授。 课程的基本特点:是计算机科学与技术专业的基础必修课,对学生进行基础性的、数据结构分析和算法设计能力的,为后续的操作系统、计算机网络、数据库、软件工程等课程奠定基础。 先修课程:面向对象程序设计 二、课程的内容体系及教学要求 第一部分有关数据结构和算法分析的基本知识 教学知识点: 数据逻辑结构和存储结构的定义和分类; 数据类型与抽象数据类型的概念; 面向对象的概念; 算法的特性; 算法的性能分析与度量,时间复杂度,空间复杂度,时间复杂度和空间复杂度的渐进表示法。 教学要求: 理解:有关数据结构的基本概念,抽象数据类型及面向对象的概念,算法的定义及算法的特性。 应用:算法的性能分析与度量方法。 第二部分数组 教学知识点: 作为抽象数据类型的数组:数组类的定义和初始化,相关操作的实现。

顺序表:顺序表类的定义;顺序表的查找、插入和删除算法。 稀疏矩阵:稀疏矩阵的抽象数据类型和压缩表示。 字符串:字符串类的定义和有关操作的实现。 教学要求: 理解:数组类的定义和操作实现,顺序表类的定义及操作实现,字符串类的定义及操作实现,稀疏矩阵的定义和表示。 应用:能够分析和设计带有数组类、顺序表类、字符串类的成员函数并分析其时间和空间复杂度,会把三角矩阵、对称矩阵、三对角矩阵等特殊矩阵用一维数组存储起来,并进行相应元素地址的计算。 第三部分链接表 教学知识点: 单链表:单链表的结构;单链表的类定义;单链表中的插入与删除;带表头结点的单链表;用模板定义的单链表类;静态链表。 循环链表:循环链表的类定义。 多项式及其相加:多项式的类定义;多项式的加法。 双向链表及其操作。 教学要求: 理解:单链表、循环链表及双向链表的定义及实现,多项式类的定义及其加法运算。 应用:针对单链表的各种插入、删除等运算的算法及性能分析。 第四部分栈与队列 教学知识点: 栈:栈的抽象数据类型;栈类的顺序存储表示和运算;栈类的链接存储表示和运算;利用栈进行表达式的计算。 队列:队列的抽象数据类型;队列类的顺序存储表示和运算;队列类的链接存储表示和运算。 优先级队列:优先级队列的定义;优先级队列的存储表示和操作实现。 教学要求: 理解:栈的定义及操作的实现,队列的定义及操作的实现,优先级队列的定义及操作的实现。 应用:表达式的各种表示法、相互转换和求值过程,按层次输出二项展开式的系数(杨

(完整版)数据结构详细教案——图

数据结构教案第七章图

第7章图 【学习目标】 1.领会图的类型定义。 2.熟悉图的各种存储结构及其构造算法,了解各种存储结构的特点及其选用原则。 3.熟练掌握图的两种遍历算法。 4.理解各种图的应用问题的算法。 【重点和难点】 图的应用极为广泛,而且图的各种应用问题的算法都比较经典,因此本章重点在于理解各种图的算法及其应用场合。 【知识点】 图的类型定义、图的存储表示、图的深度优先搜索遍历和图的广度优先搜索遍历、无向网的最小生成树、最短路径、拓扑排序、关键路径 【学习指南】 离散数学中的图论是专门研究图性质的一个数学分支,但图论注重研究图的纯数学性质,而数据结构中对图的讨论则侧重于在计算机中如何表示图以及如何实现图的操作和应用等。图是较线性表和树更为复杂的数据结构,因此和线性表、树不同,虽然在遍历图的同时可以对顶点或弧进行各种操作,但更多图的应用问题如求最小生成树和最短路径等在图论的研究中都早已有了特定算法,在本章中主要是介绍它们在计算机中的具体实现。这些算法乍一看都比较难,应多对照具体图例的存储结构进行学习。而图遍历的两种搜索路径和树遍历的两种搜索路径极为相似,应将两者的算法对照学习以便提高学习的效益。 【课前思考】 1. 你有没有发现现在的十字路口的交通灯已从过去的一对改为三对,即每个方向的直行、左拐和右拐能否通行都有相应的交通灯指明。你能否对某个丁字路口的6条通路画出和第一章绪论中介绍的"五叉路口交通管理示意图"相类似的图? 2. 如果每次让三条路同时通行,那么从图看出哪些路可以同时通行? 同时可通行的路为:(AB,BC,CA),(AB,BC,BA),(AB,AC,CA),(CB,CA,BC)

《数据结构》课程教学设计

《数据结构》课程教学设计 一、课程内容体系 1. 基本描述 课程中文名称:数据结构 课程英文译名:Data Structures 总学时:授课 40 学时+实验 20 学时 授课对象:计算机专业、自动化专业、信息专业、通讯专业、数学专业 课程要求:必修课 课程分类:专业(技术)基础 开课时间:第4学期 先修课:工科数学分析、高级语言程序设计或C++程序设计、集合与图论2. 教学定位 《数据结构》是计算机科学与技术各专业及其相关的一门专业基础课;是计算机科学与技术专业课程体系中的核心课程之一;是设计和实现编译程序、操作系统、数据库系统和其它系统软件、应用软件的重要基础。其后续课程有操作系统、编译原理、数据库系统概论、算法分析、图像处理等。在整个计算机知识体系中,数据结构具有不可替代的作用。瑞士著名的计算机科学家沃思教授曾提出:算法+数据结构=程序。算法:是对数据运算的描述;数据结构:是指数据的逻辑结构和存储结构。程序设计的实质是对实际问题选择一种好的数据结构,加之设计一个好的算法,而好的算法在很大程度上取决于描述实际问题的数据结构。由此可见数据结构在解决计算机问题中的重要地位。 学习本课程旨在使学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,掌握和不断提高运用数据结构解决实际问题的能力。通过本门课程的学习,使学生透彻地理解各种数据结构对象的特点,学会各种数据结构的组织方法和实现方法,并进一步培养良好的程序设计编程能力。同时,学习《数据结构》的过程也是复杂程序设计的训练过程,要求学生编

写的程序结构清楚、正确易读,符合软件过程的规范,从而培养学生的数据抽象能力。因此,要想有效地进行数据组织和程序开发,就必须掌握数据结构的知识。 课程的内容重点立足于基础知识和基础理论的掌握、应用能力的培养以及实践能力的提高。该课程通过一些最常用的数据结构的介绍,阐明了数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种典型应用说明它们在进行各种运算时的动态性质及实际的执行算法。具体来说,就是从数据结构的逻辑结构、存储结构和数据的操作三个方面使学生较好的掌握线性表、树、二叉树、图和文件等常用的数据结构的基本概念及构建方法。并掌握在各种常用数据结构上实现的查找和排序算法。同时对算法的时间和空间复杂性有一定的分析能力。在课程学习结束后要求学生针对简单的应用问题,能够选择合适的数据结构设计并编写出有效的算法程序。 本课程是实践性很强的一门课程,不但要求学生要深刻理会相应的基本理论、基本原理等知识,还要求学生亲自动手设计、上机实现各种算法,以达到使学生理论与实践相结合,综合应用各知识点的目的,巩固、加深所学的理论,并培养学生的科学研究能力和创新精神,并为后继课程的学习奠定坚实的基础。 3. 知识点与学时分配 第一章绪论(1学时) 数据结构的基本概念和术语;数据结构在软件系统中的作用;课程的研究和学习内容等;算法及其特征;算法性能度量指标;算法时间和空间复杂性及其分析方法。 第二章线性表(4学时) 线性表的逻辑结构、各种存储结构、基本操作(算法)的实现及性能分析、不同存储结构的比较、线性表的应用等。 第三章栈与队列(4学时) 栈和队列的逻辑结构定义及在两种存储结构上如何实现栈和队列的基本操作。栈和队列的本质区别,并且能在相应的应用问题中正确选用它们。栈和队列的应用。

数据结构课程设计教学任务书

《数据结构》课程设计教学任务书 计算机2007-1 课程设计周数:第20周指导老师:刘文娟 一、课程设计的目的 数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的: ?了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; ?初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; ?提高综合运用所学的理论知识和方法独立分析和解决问题的能力; ?训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科 学的工作方法和作风。 二、课程设计的基本要求 1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。 2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。 3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成; 其中包括: a)需求分析: 在该部分中叙述,每个模块的功能要求 b)概要设计 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。 c)详细设计 各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现) 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 d)调试分析 测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。 e)课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到

《数据结构(C语言版)》教案

《数据结构(C语言版)》教案 《数据结构(C语言版)》教案 2020 至2020 学年第一学期教案课程名称数据结构使用教材《数据结构(C语言版)》教学时数56课程性质必修任课班级(人数)信管(53人)信息系(部)信管教研室任课教师山东科技大学泰山科技学院课时授课计划2020-2020学年第二学期 第1周授课日期2月20 日星期1 月日星期月日星期月日星期月日星期班级信管10-1 基本课题第1章绪论 1.1-1.2 教学目的与要求: 1. 了解数据结构的基本概念 2. 理解常用术语教学重点: 数据结构的基本概念和术语教学难点: 数据元素之间的四种结构关系作业及参考书: 1、什么是数据结构?《数据结构算法实现及解析》/高一凡编著教具: 多媒体板书课堂类型: 讲授教学过程:自我介绍——开课——引入——展开——举例——小结——作业一、自我介绍和课程介绍约8min 课时:64 二、引入约2min 由问题的提出引入三、讲课进程设计1.1 什么是数据结构 1.1.1、数据结构与其它的关系约15min 数据结构+算法=程序程序设计: 为计算机处理问题编制一组指令集算法: 处理问题的策略数据结构: 问题的数学模型 1.1.2、当今计算机应用的特点: 约25min l) 所处理的数据量大且具有一定的关系; 2) 对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。 举例说明: 1) 学生成绩表2)井安棋对弈3)交通管理结论计算机的操作对象的关系更加复杂,操作形式不再是单纯的数值计算,而更多地是对这些具有一定关系的数据进行组织管理; 我们将此称为非数值性处理。要使计算机能够更有效地进行这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的具体实现手段。 1.2 基本概念和术语1.1.1、数据与数据结构约20min 数据:是对客观事物的符号表

《数据结构》教案

《数据结构》教案

安庆师范学院 教案(课时计划) 课程名称:数据结构 授课班级: 授课地点: 主讲教师:程玉胜 2

2015----2016 学年第2学期 3

目录 01、数据结构的概念及相关术语 02、抽象数据类型的表示与实现、算法和算法分析 03、线性表的类型定义、线性表的顺序表示和实现 04、线性表的链式表示和实现(线性链表) 05、循环链表、双向链表、一元多项式的表示及相加 06、栈、栈应用举例(数制转换、括号匹配、行编辑) 07、迷宫求解、表达式求值、栈与递归的实现 08、队列 09、机动 10、习题课 11、串类型的定义、串的表示和实现 4

12、串的模式匹配算法、串操作应用举例 13、数组的定义、顺序表示和实现、矩阵的压缩存储 14、稀疏矩阵的存储结构、广义表 15、树的定义和基本术语、二叉树的定义 16、二叉树的性质、二叉树的存储结构 17、遍历二叉树和线索二叉树 18、树和森林 19、赫夫曼树及其应用 20、习题课 21、图的定义和术语、图的存储结构 22、十字链表、邻接多重表、图的遍历 23、图的连通性问题 24、有向无环图及其应用 25、最短路径 26、静态查找表 27、二叉排序树和平衡二叉树 5

28、B-树和B+树 29、哈希表 30、排序概述、插入排序 31、快速排序、选择排序 32、归并排序、基数排序 33、外部排序、各种排序方法的比较 34、文件 编号 1 周次1日期9.3课时安排2课题数据结构的概念及相关术语 教材的重点、难点分析重点:(1)数据结构的逻辑结构 (2)数据结构的存储结构 (3)抽象数据类型的概念 教学目标掌握数据、数据元素、数据对象的概念 熟练掌握数据结构的概念及其逻 6

任燕主编《数据结构》教学大纲

《数据结构》教学大纲 课程性质:学科基础课程 适用专业:计算机科学与技术、网络工程、数字媒体技术 先行课:计算机科学导论、离散数学、高级语言程序设计; 选用教材及参考资料(与考试大纲一致) 教材:1.任燕主编《数据结构C++语言描述》,清华大学出版社,2011年 2. 严蔚敏《数据结构(C语言版)》清华大学出版社出版 实验教材: 1、任燕主编《数据结构上机实验指导C++语言描述》,清华大学出版社,2011年 2、系自制的实验指导 一、课程的目的与任务 数据结构是信息与计算科学专业中一门重要的专业基础课程。当用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象,通过这两方面内容的学习,为后续软件方面的课程打下了厚实的知识基础,同时也提供了必要的技能训练。因此,数据结构课程在计算机应用专业中具有举足轻重的作用。 本课程的目的是使学生掌握数据组织、存储和处理的常用方法,为以后进行软件开发和学习后续专业课程打下基础。主要任务是讨论现实世界中数据的各种逻辑结构,在计算机中的存储结构以及进行各种非数值运算的算法。 本课程达到《认证通用标准》规定中关于“毕业要求”的第三款项(具有运用工程基础知识和本专业基本理论知识解决问题的能力,具有系统的工程实践学习经历;了解本专业的前沿发展现状和趋势)、第四款项(具备设计和实施工程实验的能力,并能够对实验结果进行分析)。 二、课程的基本要求 通过本课程的学习,要求学生了解数据结构及其分类、数据结构与算法的密切关系;熟悉各种基本数据结构及其操作,学会根据实际问题要求来选择数据结构;掌握设计算法的步骤和算法分析方法;掌握数据结构在排序、查找和路由选择等常用算法中的应用。 最后学生应达到知识技能两方面的目标:在基础方面,要求学生掌握常用数据结构的基本概念及其不同的实现方法;在技能方面,通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会。 三、课程教学内容 第一章绪论 基本要求: 掌握数据结构的基本概念,抽象数据类型在软件设计中的意义,算法的概念和算法的时间复杂度分析,了解算法的描述和评价。 基本知识点: 数据结构的基本概念;

《数据结构》课程教案

《数据结构》课程教案 课程类别:专业基础课 适用专业:计算机应用技术 授课学时:32学时 课程学分:4学分 一、课程性质、任务 课程性质:《数据结构》是计算机应用技术专业的必修课程,也是研究如何对数据进行组织和设计、如何编制高效率的处理程序的一门基础学科。 课程任务: 1、学习计算机程序编写中的数据组织和设计; 2、数据的物理结构和逻辑结构; 3、经典算法的设计和算法效率的分析。 二、课程培养目标: (一)知识目标 通过理论学习和程序的编写,使学生系统地掌握程序中数据的组织、数据的物理结构和逻辑结构,在重要算法的实现上逐步提高编程能力。 (二)技能目标 通过课程的学习,让学生掌握重要的数据结构,对数据的逻辑结构和物理结构有深入的理解,同时能编写出使用重要算法知识的程序,并运用所学知识编写程序解决实际中的问题。 (三)素质目标 通过课程的学习,让学习学会自学,培养学生的自学能力、克服学习困难的能力,同时让学生掌握计算机编程中数据结构的学习方法,并养成严谨、认真、仔细、踏实、上进的好习惯。 三、选用教材与参考资料 教材版本信息 《数据结构与算法简明教程(Java语言版)》清华大学出版社叶小平陈瑛主编 教材使用评价 本教材经过两年的使用,得到了读者一致认可,同时也在不断改进,适合高职高专教学使用,内容基础、重难点突出,符合高职高专“理论够用、注重实践”的要求。

选用的参考资料 严蔚敏.吴伟民《数据结构(C语言版)》.清华大学出版社.2009年版 殷人昆.《数据结构》.清华大学出版社.1999年版 《C语言程序设计》.石油大学出版社 《C语言程序设计》.中国石油大学出版社.2006年版 四、本课程与其他课程的联系与分工 先修课程 《离散数学》、《程序设计基础》 后续课程 《面向对象技术》、《操作系统》 与其他课程配合与取舍情况 《数据结构》与《离散数学》知识点结合较多,《离散数学》讲求逻辑思维能力的培养和训练,《数据结构》中逻辑结构的学习也需要逻辑思维能力做铺垫。同时《程序设计基础》课程也为学习《数据结构》打下了基础,对于本课程的教材,我们采用C语言来描述数据结构,因此程序设计基础也是以C语言作为的对象。本课程也与《算法设计与分析》结合得很紧密,因此在学习中我们也会引入常见算法的学习,达到两者共同促进的目的。 五、课程教学内容与基本要求 第一章数据结构导论 (一)、教学内容 第一节数据结构的基本概念 一、引言 二、数据结构有关概念及术语 第二节算法和算法描述 一、什么是算法 二、算法描述工具——类C语言 第三节算法评价 一、时间 二、空间 (二)、教学目的要求 通过本章的学习让学生了解数算法的基本概念,理解如何运用类C语言来描述算法,掌握据结构的概念和相关术语、算法的描述方法,学会从程序中分析算法效率和用函数式表示该程序的算法效率。 在学完本章后,要求学生对数据结构的涉及领域有大体的认识,同时了解数据结构的作用,明确数据结构和程序开发的关系。通过对算法效率的分析,学会使用这一知识点来优化自己所写程序的执行效率。

数据结构教案C语言版

数据结构教案C语言版 Last updated on the afternoon of January 3, 2021

课程教案 课程名称:数据结构 授课教师: 学习对象: 任课时间: 一、学生情况分析 数据结构是计算机专业的一门核心专业课程。学生在前期的学习中已经学习了C语言程序设计课程。通过本课程学习使学生对提高编写程序的能力以及解决实际问题的能力。 二、课程教学目标 《数据结构》是计算机学科中一门核心专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。 三、课程教学内容 第一章绪论 教学内容: 1)什么是数据结构

2)抽象数据类型概念;数据类型;数据抽象与抽象数据类型;用于描述数据结构的语言 3)数据结构的抽象层次 4)算法定义 5)性能分析与度量;算法的性能标准;算法的后期测试;算法的事前估计;空间复杂度度量;时间复杂度度量;时间复杂度的渐进表示法; 教学要求: 了解:数据结构基本概念及数据结构的抽象层次 了解:抽象数据类型概念 了解:算法的定义及算法特性 掌握:算法的性能分析与度量方法 第二章线性表 教学内容: 1)线性表的定义和特点 2)线性表的顺序存储及查找、插入和删除操作 3)线性表的链式存储及查找、插入和删除操作 4)使用线性表的实例 教学要求: 了解:线性表的定义和特点 熟练掌握:线性表的顺序存储结构的查找、插入和删除等基本操作 熟练掌握:单链表、循环链表及双向链表的定义及实现 掌握:熟练掌握单链表的应用方法

数据结构课程教学设计报告

数据结构课程设计报告题目:哈夫曼树和编码应用 学生姓名: 学号: 班级: 指导教师: 2011年 6 月3日

目录 ●课程设计目的------------------------3 ●课程设计题目------------------------3 ●需求分析----------------------------4 ●设计原理----------------------------4 ●系统功能框架图----------------------5 ●流程图------------------------------6 ●设计思路----------------------------7 1.主函数 2.创建哈夫曼树 3.输出哈夫曼树 4.对哈夫曼树进行编码 5.译码 ●程序源代码--------------------------8 ●运行结果----------------------------13 ●实验心得----------------------------21

一、课程设计目的 本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 二、课程设计题目--哈夫曼树和编码应用 (1)从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树的存储结构; (2)利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对给定的n个字符正文进行编码,并输出每个字符的编码。 (3)利用已建好的哈夫曼树,对给定的一个哈夫曼编码进行译码,判断此编码对应的字符序列,并输出结果。 三、需求分析 1、利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(既可以双向传输信息的信道),每端都需要一个完整的编/译码系统。本次设计就是为这样的信息收发站写的一个哈夫曼的编/译码器。 本实验要求: 2、本演示程序中,用户可以输入键盘中的任意字符,长度为任意长,字符输入顺序不限,且允许出现重码 3、演示程序以用户与计算机的对话方式执行,即在计算机终端上显示“提示信息”

数据结构教案

课程简介 人们在运用程序设计语言编写程序的过程中发现所有的数据都可以抽象为三种结构,而对这些数据的所有操作都可以转化为对这三种数据的几种基本操作,而大多数的程序设计技巧都可以抽象为一些最基本的算法。于是人们逐步发展了一门称为数据结构(或数据结构与算法)的计算机科学,它广泛应用于计算机领域。 数据结构是信息与计算专业的核心基础课程之一。数据是计算机处理的对象,本课程研究的数据是非数值性、结构性的数据。学习本课程要求掌握各种主要数据结构的特点、计算机内的表示方法,以及处理数据的算法,对于算法所花费的时间和空间代价的分析也要求有一定程度的了解和掌握。通过本课程的学习,使学生透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养基本的良好的程序设计能力。本课程主要包括如下三个方面的内容: 1.基本数据结构:线性表、栈、队列、串、数组和广义表,掌握它们的特点、表示和实现,对静态结构要求非常熟练的编程上机实现,对动态结构要求逐步熟悉链表的表示,通过模仿实验教程中的例子,掌握编程技巧。强调类C语言的书写规范,特别注意参数的区别,输入输出的方式和错误处理方式,以及抽象数据类型的表示和实现。能熟练完成以下的应用:多项式的计算、语法检查、回朔算法、递归算法、表达式求值、离散事件模拟、文字的编辑和稀疏矩阵进行矩阵运算采用的处理方法。 2.复杂数据结构:树、二叉树、图。掌握它们的定义和特点、表示和实现,特别注意与基本数据结构的区别,掌握各种遍历的递归和非递归算法,能熟练完成以下的应用:最优树、Huffman编码、拓扑排序、关键路径和最短路径问题。 3.数据结构的应用:查找和内部排序。熟练掌握静态查找表的查找方法和实现,了解哈希表的构造和查找方法。掌握各种内部排序方法的基本思想、算法特点、排序过程以及它们的时间复杂度分析。

数据结构教案C语言版

课程教案 课程名称:数据结构授课教师: 学习对象: 任课时间: 一、学生情况分析

数据结构是计算机专业的一门核心专业课程。学生在前期的学习中已经学习了C语言程序设计课程。通过本课程学习使学生对提高编写程序的能力以及解决实际问题的能力。 二、课程教学目标 《数据结构》是计算机学科中一门核心专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。 三、课程教学内容 第一章绪论 教学内容: 1)什么是数据结构 2)抽象数据类型概念;数据类型;数据抽象与抽象数据类型;用于描述数据结构的语言 3)数据结构的抽象层次 4)算法定义 5)性能分析与度量;算法的性能标准;算法的后期测试;算法 的事前估计;空间复杂度度量;时间复杂度度量;时间复杂度 的渐进表示法; 教学要求: 了解:数据结构基本概念及数据结构的抽象层次 了解:抽象数据类型概念

了解:算法的定义及算法特性 掌握:算法的性能分析与度量方法 第二章线性表 教学内容: 1)线性表的定义和特点 2)线性表的顺序存储及查找、插入和删除操作 3)线性表的链式存储及查找、插入和删除操作 4)使用线性表的实例 教学要求: 了解:线性表的定义和特点 熟练掌握:线性表的顺序存储结构的查找、插入和删除等基本操作 熟练掌握:单链表、循环链表及双向链表的定义及实现 掌握:熟练掌握单链表的应用方法 第三章栈和队列 教学内容: 1)栈:栈的抽象数据类型;栈的顺序存储表示;栈的链式存储表示 2)队列:队列的抽象数据类型;队列的顺序存储表示;队列的链式存储表示 3)队列的应用举例 教学要求:

相关文档
最新文档