《数据结构》教案.docx

上传人:b****8 文档编号:9189511 上传时间:2023-05-17 格式:DOCX 页数:30 大小:108.46KB
下载 相关 举报
《数据结构》教案.docx_第1页
第1页 / 共30页
《数据结构》教案.docx_第2页
第2页 / 共30页
《数据结构》教案.docx_第3页
第3页 / 共30页
《数据结构》教案.docx_第4页
第4页 / 共30页
《数据结构》教案.docx_第5页
第5页 / 共30页
《数据结构》教案.docx_第6页
第6页 / 共30页
《数据结构》教案.docx_第7页
第7页 / 共30页
《数据结构》教案.docx_第8页
第8页 / 共30页
《数据结构》教案.docx_第9页
第9页 / 共30页
《数据结构》教案.docx_第10页
第10页 / 共30页
《数据结构》教案.docx_第11页
第11页 / 共30页
《数据结构》教案.docx_第12页
第12页 / 共30页
《数据结构》教案.docx_第13页
第13页 / 共30页
《数据结构》教案.docx_第14页
第14页 / 共30页
《数据结构》教案.docx_第15页
第15页 / 共30页
《数据结构》教案.docx_第16页
第16页 / 共30页
《数据结构》教案.docx_第17页
第17页 / 共30页
《数据结构》教案.docx_第18页
第18页 / 共30页
《数据结构》教案.docx_第19页
第19页 / 共30页
《数据结构》教案.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《数据结构》教案.docx

《《数据结构》教案.docx》由会员分享,可在线阅读,更多相关《《数据结构》教案.docx(30页珍藏版)》请在冰点文库上搜索。

《数据结构》教案.docx

《数据结构》教案

《数据结构》课程授课教案

一、课程基本信息

课程编号:

08120320

课程中文名称:

数据结构

课程英文名称:

DataStructure

课程性质:

必修√选修□

课程类型:

公共课□专业基础课√专业课□

总学时:

64(其中理论48学时,实验16学时,课程设计1周)

总学分:

4

二、课程地位

《数据结构》作为一门独立的课程最早是在美国的一些大学开设的,1968年美国Donald.Knuth教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》系统地阐述数据的逻辑结构和存储结构及其操作的著作,是《数据结构》的经典之作。

20世纪60年代末出现了大型程序,软件也相对独立,结构程序设计成为程序设计方法学的主要内容,人们越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法,即程序=数据结构+算法。

从70年代开始,《数据结构》得到了迅速发展,数据结构的研究不仅涉及到计算机硬件,而且和计算机软件的研究有着更密切的关系,无论是编译程序、操作系统、数据库还是信息检索,都涉及到数据元素的组织以及在存储器中的分配。

数据

结构技术成为设计和实现编译程序、操作系统、数据系统及其它系统程序和大型应用程序的关键技术。

《数据结构》的学习越来越被人们所重视,成为构建计算机类专业群的重要课程。

本课程的先修课程是:

C语言或C++程序设计、离散数学等。

通过本课程的学习,要使学生熟练地掌握数据结构的内在逻辑关系及其在计算机中的表示方法(存储结构),以及有关基本操作的算法实现;熟悉它们在计算机科学中的基本应用;培养和训练学生结合实际应用,根据求解的问题合理选择数据结构、应用高级语言编写和实现结构清晰、正确易读的有效算法的能力;并为学习《操作系统》、《编译原理》、《数据库原理》等后续课程和研制开发各种系统和应用软件打下扎实的理论和实践基础。

三、教材及主要参考资料

1.严蔚敏吴伟民.数据结构(C语言版).清华大学出版社,2006年5月

2.朱战立编著,数据结构——使用C语言(第3版),西安交通大学出版社,2003年

四、课时分配

序号

授课内容提要

学时

1

第一章绪论

2学时

2

第二章线性表

讲课4学时,实验4学时

3

第三章栈和队列

讲课4学时,实验2学时

4

第四章串

4学时

5

第五章数组和广义表

4学时

6

第六章树和二叉树

讲课8学时,实验4学时

7

第七章图

讲课10学时,实验2学时

8

第九章查找

4学时,实验2学时

9

第十章内部排序

8学时,实验2学时

五、考核方式与成绩核定办法

1.考核方式:

考试

2.成绩核定办法:

总评成绩=期末成绩(70%)+实验、作业(15%)+平时考勤(15%)

六、授课方案

第一章绪论(2学时)

1.教学内容:

学习数据结构的意义;

数据结构的基本概念;

数据结构的分类;

算法及其描述;

算法评价

2.教学要求:

理解数据、数据元素、数据对象、数据结构、存储结构和数据类型等概念术语的含义;抽象数据类型的定义、表示和实现方法。

了解算法设计的基本要求,并掌握从时间和空间角度分析算法的方法。

3.教学重点:

掌握计算语句频度和估算算法时间复杂度、空间复杂度的方法。

教学难点:

逻辑结构、存储结构的联系与区别;算法的时间复杂度分析。

4.教学策略:

讲授法配合板书

5.教学预习:

C语言的书写规范。

6.习题:

(1)简述数据与数据元素的关系与区别。

(2)说出数据结构中的四类基本逻辑结构,并说明哪种关系最简单、哪种关系最复杂。

(3)画出线性结构的示意图。

(4)画出树形结构的示意图。

(5)画出图状结构的示意图。

(6)什么是逻辑结构、存储结构?

有哪几种存储结构?

(7)简述顺序存储结构与链式存储结构在表示数据元素之间关系上的主要区别。

(8)简述逻辑结构与存储结构的关系。

(9)通常从哪几个方面评价算法的质量?

(10)算法的时间复杂度主要有哪几种?

按从优到劣的顺序写出各种表示形式。

(11)简述下列概念:

数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

(12)下列算法的时间复杂度是()。

for(i=0;i

for(j=0;j

A.O

(1)B.O(n)C.O(log2n)D.O(n2)

(13)下列算法的时间复杂度是()。

for(i=0;i

A.O

(1)B.O(n)C.O(log2n)D.O(n2)

第二章线性表(讲课4学时,实验4学时)

1.教学内容:

线性表的逻辑结构;

线性表的基本运算;

线性表的顺序存储结构;

在顺序表上实现的数据结构的基本运算;

线性表的链式存储结构:

单链表、循环链表、双向链表;

在链式存储结构上实现的数据结构的基本运算

2.教学要求:

理解线性表的逻辑结构定义、抽象数据类型定义。

掌握线性表的两种存储结构(顺序的和链式的)的描述方法,及其在顺序存储结构和各种链表结构上实现的基本操作:

如查找、插入和删除的算法。

掌握静态链表及运算。

了解一元多项式的表示及相加算法。

3.教学重点:

线性表的定义、逻辑特点;线性表各种存储结构的特点﹑数据类型描述;在各种存储结构(顺序表、单向链表、循环链表、双向链表)中实现线性表操作(如插入、删除、查找等算法)的基本方法。

教学难点:

链表本质及其操作的实现算法。

4.教学策略:

讲授法配合板书

5.教学预习:

线性表的基本概念及有关操作。

6.习题:

(1)若某线性表采用顺序存储结构,每个元素占四个存储单元,首地址为100,则下标为11的(第12个)元素的存储地址为()。

(2)下列说法正确的是()。

A.线性表的逻辑顺序与存储顺序总是一致的

B.线性报第链式存储结构中,内存中可用的存储单元可以使连续的,也可以不连续

C.线性表弟顺序存储结构优于链式存储结构

D.每种数据结构都具有插入、删除和查找三种基本运算

(3)L是线性表,已知ListLength(L)的值是5,运算DeleteList(L,2)后ListLength(L)的值是()。

A.5B.0C.4D.6

(4)线性表中哪些元素只有一个直接前驱和一个直接后继()。

A.首元素B.尾元素C.中间元素D.所有的元素

(5)线性表(L)经运算InitList(L)后,函数IEmpty(L)的值是()。

A.0B.,falseC.1D.Null

(6)指针P指向循环链表L的首元素的条件是()。

A.P=LB.P->nest=LC.L->nest=PD.P->nest=null

(7)线性表中各元素之间的关系是()关系。

A.层次B.网状C.有序D.集合

(8)在单链表的一个结点中有()个指针。

A.1B.2C.0D.3

(9)在双向链表的一个结点中有()个指针。

A.1B.2C.0D.3

(10)设非空单链表的数据字段为data,指针字段为next,指针p指向单链表中第i个结点,s指向已生成的新结点,现将s结点插入到单链表中,使其成为第i+1个结点,下列算法段能正确完成上述要求的是()。

A.s->next=p->next=s;B.p->next=s;s->next=p->next;

C.s->next=p->next;p->next=s;交换p->data和s->data;D.p=s;s->next=p

(11)设双链表中结点的前趋指针的字段分别为t1和rl,则删除双链表中指针s所指结点的操作为()。

A.s->t1-r1=s->t1;s-r1=s->r1;B.s->t1-r1=s->r1;s->r1=s->t1;

C.s->r1=s->t1;s->t1=s->r1->t1;D.s->t1=s-t1->r1;s->r1=s->t1;

(12)假设left和right为双向链表中指向直接前趋结点和直接后继结点的指针字段,现要把一个指针s所指的新结点作为非空双链表中q所指结点(中间结点)的直接后继结点插入到该双向链表中,则下列算法段能正确完成上述要求的是()。

A.q->right=s;s-left=q;q-right->left=s;s-right=q->right;

B.s->left=q;q->right=s;q->right->left=s;s->right=q->right;

C.s->left=q;s-right=q->right;q->right-left=s;q-right=s;

D.以上都不对

第三章栈和队列(讲课4学时,实验2学时)

1.教学内容:

栈的概念、存储结构及其基本操作;

队列的概念、存储结构及其基本操作;

栈与队列的应用举例;

2.教学要求:

理解栈和队列的结构特性及抽象数据类型定义,并能在相应的应用问题中正确选用;理解函数调用时运行栈机制;理解递归算法执行过程中栈的状态变化过程。

掌握在两种存储结构上(顺序的和链式的)如何实现栈和队列的基本操作以及栈和队列在程序设计中的应用。

3.教学重点:

栈和队列的定义、特征;顺序栈、链栈的描述及基本操作实现算法;循环队列和链队列的基本操作实现算法。

教学难点:

栈满、栈空的条件及描述方法;队满和队空的描述方法;循环队列上的插入、删除操作。

4.教学策略:

讲授法配合板书

5.教学预习:

栈与队列的概念及基本操作。

6.习题:

(1)栈是限定在处进行插入或删除操作的线性表()。

A、端点B、栈底C、栈顶D、中间

(2)在栈顶一端可进行的全部操作时()。

A、插入B、删除C、插入和删除D、进栈

(3)4个元素按A、B、C、D、顺序连续进Szhan栈,进行Pop(S,x)元素后,x的值是()。

A、AB、BC、CD、D

(4)栈的特点是()。

A先进先出B后进先出C后进后出D不进不出

(5)栈结构的元素个数是()。

A不变的B可变的C任意的D0

(6)4个元素进S栈的顺序是A、B、C、D,进行两次Pop(S,x)操作后,栈顶元素的值是()。

A、AB、BC、CD、D

(7)同一个栈内各元素的类型()。

A必须一致B可以不一致C不能一致D不必不一致

(8)顺序栈存储空间的实现使用()。

A链表B数组C循环链表D变量

(9)一个顺序栈一旦说明,其占用空间的大小()。

A已固定B可以改变C不能固定D动态变化

(10)栈是一个线性表结构()。

A不加限制的B加了限制的C推广了的D非

(11)栈与一般线性表区别主要在方面()。

A元素个数B元素类型C逻辑结构D插入、删除元素的位置

(12)顺序栈是空栈的条件是()。

A.top==0B.top==1C.top==-1D.top==m

(13)元素A、B、C、D依次进顺序栈后,栈顶元素是()。

A.AB.BC.CD.D

(14)经过下列栈的运算后GetTop(s)的值是()。

InitStack(s);Push(s,a);Push(s,b);Pop(s);

A.aB.bC.1D.2

(15)经过下列栈的运算后EmptyStack(s)的值是()。

InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,x);

A.aB.bC.1D.0

(16)队列是限定在处进行插入操作的线性表()。

A.端点B.队头C.队尾D.中间

(17)队列是限定在处进行删除操作的线性表()。

A.端点B.队头C.队尾D.中间

(18)队列的特点是。

A.先进先出B.后进先出C.先进后出D.不进不出

(19)循环队列Sq是空队列的条件是()。

ASq->read==Sq->frontB(Sq->read+1)%maxsize==Sq->front

CSq->read==0DSq->front==0

(20)循环队列Sq是满队列的条件是()。

ASq->read==Sq->frontB(Sq->read+1)%maxsize==Sq->front

CSq->read==0DSq->front==0

(21)当循环队列Sq是满队列时,存放队列元素的数组data有n个元素,则data中存放个队列元素()。

A.nB.n-1C.n-2D.0

(22)经过下列运算后GetHead(Q)的值是()。

InitQueue(Q);EnQueue(Q,a);EnQueue(Q,b);OutQueue(Q,x);

A.aB.bC.1D.2

(23)链栈ls是空栈的条件是()。

A.ls==nullB.ls->next==nullC.Ls==0D.ls->next==ls

(24)设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:

①若入、出栈次序为Push

(1),Pop(),Push

(2),Push(3),Pop(),Pop(),Push(4),Pop(),则出栈的数字序列为何(这里Push(i)表示进栈,Pop()表示出栈)?

②能否得到出栈序列1423和1432?

并说明为什么不能得到或者如何得到。

③请分析1,2,3,4的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。

第四章串(4学时)

1.教学内容:

串的定义、存储结构和基本运算、模式匹配;熟悉串的七种基本操作的定义,并能利用这些基本操作来实现串的其它各种操作的方法;

熟练掌握在串的定长顺序存储结构上实现串的各种操作的方法。

掌握串的堆存储结构以及在其上实现串操作的基本方法。

了解串操作的应用方法和特点。

2.教学要求:

了解串的抽象数据类型定义。

掌握串的定长顺序存储结构、块链存储结构和堆分配存储结构;串的各种基本操作的实现及其应用;串的模式匹配算法。

理解KMP算法。

3.教学重点:

串的数据类型定义;串的三种存储表示;串的模式匹配算法。

难点:

KMP模式匹配算法。

4.教学策略:

讲授法配合板书

5.教学预习:

串的定义、存储结构和基本运算、模式匹配。

6.习题:

(1)设S=“IAMASTUDENT”,其长度是()。

(2)串是一种特殊的线性表,其特征体现在。

A可以顺序存储B数据元素是一个字符

C可以链接存储D数据元素可以使多个字符

(3)设有两个串p和q,求q在p中首次出现的位置的运算称作()。

A连接B模式匹配C求串长D求子串

(4)设字符串S1=“ABCDEFG”,S2=“PQRST”,则运算:

S=CONCAT(SUBSTR(S1,2,LEN(S2));SUBSTR(S1,LEN(S2),2));后的串值为()。

A、BCDEFB、BCDEFGC、BCDPQRSTD、BCDEFER

(5)判断题

空格串和孔串的长度均为1。

()

串是一种特殊的线性表,其特殊性体现在数据元素可以使多个字符。

() 

判断两个串是否相等,只需要判断这两个串是否包含相同的字符即可。

() 

将一个n×n的对称矩阵,以行为主序或以列为主序存入内存,其容量至少为n2。

() 

若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行标和列标互换,就完成了对该矩阵的转置运算。

()

第五章数组和广义表(4学时)

1.教学内容:

了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法。

掌握对特殊矩阵进行压缩存储时的下标变换公式。

了解稀疏矩阵的两种压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法。

2.教学要求:

了解多维数组的结构特点和抽象数据类型定义;了解稀疏矩阵的两种压缩存储方法的特点和适用范围;理解以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法。

掌握数组的两种存储表示方法以及数组元素存储位置的计算公式;掌握特殊矩阵压缩存储方法及地址变换公式;掌握广义表的结构特点及其存储表示方法。

理解广义表的递归算法。

3.教学重点:

数组的两种存储表示方式及元素存储地址的计算公式;特殊矩阵和稀疏矩阵的压缩存储方法;广义表的定义、长度﹑深度﹑广义表的存储结构以及广义表的表头、表尾操作。

难点:

特殊矩阵和稀疏矩阵的压缩存储方法及运算的实现。

4.教学策略:

讲授法配合板书

5.教学预习:

数组的存储表示。

6.习题:

(1)对于一个二维数组A[0..m][0..n],若按行序为主序存储,则人一元素A[i][j]的存储地址为()。

(2)设数组R[1..10,-2..6,2..8]以行序为主序存储,设第一个元素的首地址为100,每个元素占3个存储单元,则元素A[5,0,7]的存储地址为()。

(3)设有一个10阶对称矩阵A采用压缩存储方式以行序为主序位存储,a85的存储地址为()。

(4)数组的基本操作主要包括()。

A建立与删除B索引与修改C访问与修改D访问与索引

(5)稀疏矩阵一般的压缩存储方法有两种,即()。

A二维数组和三维数组B三元组和散列

C三元组和十字链表D散列和十字链表

(6)设矩阵A是一个对称矩阵,为了节省空间,将其下三角矩阵按行序存放在一维数组B[1,n(n+1)/2]中,对下三角部分中任一元素aij(i≥j),在一维数B中下标k的值是()。

Ai(i-1)/2+j-1Bi(i-1/2+jCi(i+1)/2+j-1Di(i+1)/2+j

第六章树和二叉树(讲课8学时,实验4学时)

1.教学内容:

树的定义和存储结构;

二叉树的定义、性质、存储结构;

二叉树的遍历、线索算法;

树和二叉树的转换;

哈夫曼树及其应用

2.教学要求:

掌握二叉树的定义、性质和存储结构,二叉树遍历的方法和算法。

理解二叉树线索化的实质,掌握二叉树的线索化过程以及在线索二叉树上找给定结点的前驱和后继的方法。

了解树和森林的定义、各种存储结构及其特点;理解树和森林的遍历;掌握树的性质、树和森林与二叉树的相互转换方法。

掌握最优二叉树的定义、建立哈夫曼和哈夫曼编码的方法,理解构造哈夫曼树及求哈夫曼编码的算法。

3.教学重点:

二叉树的定义、性质、存储结构及各种存储结构的特点及适用范围;二叉树的遍历方法及各种遍历策略的递归和非递归算法;二叉树线索化算法;树的性质、存储结构、与二叉树的转换;哈夫曼树的定义、构造方法及其应用。

教学难点:

深入理解二叉树的递归定义,灵活运用二叉树的遍历方法解决相关应用问题。

4.教学策略:

讲授法配合板书

5.教学预习:

树的概念和存储、性质、基本操作。

6.习题:

填空题

(1)假定一棵树的嵌套括号表示法为A(B(E),C(F(H,I,J),G),D),则该树的度为(),树的深度为(),终端点的个数为(),分支结点的个数为(),双分支结点为(),三分支结点的个数为(),C结点的双亲结点为(),其孩子结点为()和()。

(2)设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针字段为空的结点有()。

(3)对于一个具有n个结点的二叉树,当它储存在二叉树表中时,其指针字段的总数为()个,其中()个用于链接孩子点,()个空暇,

(4)一棵深度为K的满二叉树结点总数为(),一棵深度为K的完全二叉树的结点总数的最小值为(),最大值为()。

(5)如果T2是由有序树T转换而来的二叉树,那么T中结点的()序是T2中结点的()。

(6)具有n个结点的完全二叉树,若按层次从上到下、从左到右对其编号(根结点为1号),则编号最大的分支结点序号为(),编号最小的分支结点序号为(),编号最大的叶子结点序号为(),编号最小的叶子结点序号为()。

(7)有m个叶子结点的哈夫曼树,其结点总数为()。

(8)由三个结点构成的二叉树,共有()种不同的结构。

选择题

(1)将一棵有100个结点的完全二叉树,从根这一层开始,每一层从左到右依次对结点编号,根据点的编号为1,则编号为49的结点的双亲的编号为()。

A.24 B.25C.23D无法确定

(2)深度为6(根据的层次为1)的二叉树至多有()结点。

        

A64B63C31D32

(3)设二叉树有n个结点,则其深度为。

  

An-1BnC㏒2nD无法确定

(4)设森林T中有三棵树,第一、第二、三棵数的活结点个数分别为n1n2n3,那么将森林转换成二叉树后,其根结点的右子树上有()个结点。

     

An1-1Bn2+n3Cn1+n2+n3Dn1

(5)设森林T中有三棵树,第一、二、三棵数的结点个数分别为n1n2n3,那么将森林转换成二叉树后,其根结点的左子树上有()个结点。

       

A.n1-1    B.n2+n3    C.n1+n2+n3     D.n1

(6)设深度为K的二叉树上只有度为0或度为2的结点,则这类二叉树上所含结点总数至少()。

A.K+1     B.2K    C2K—1      D2K+1

(7)树转换成二叉树后,以下结论正确的是()。

A树的先根遍历序列与其对应的二叉树的先序遍历序列相同  

B树的先根遍历序列与其对应的二叉树的中序遍历序列相同      

C树的后根遍历序列与其对应的二叉树的后序遍历序列相同   

D以上都不对

(8)某二叉树的前序遍历结点访问顺序为,ABDGCDFH中序遍历结点访问顺序为DGBAECHE,则其后续遍历结点访问顺序为()。

A.BDGCEFHAB.GDBECFHAC.BDGAECHFD.GD

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2