数据结构教案Word下载.docx

上传人:b****7 文档编号:22363576 上传时间:2023-02-03 格式:DOCX 页数:46 大小:28.52KB
下载 相关 举报
数据结构教案Word下载.docx_第1页
第1页 / 共46页
数据结构教案Word下载.docx_第2页
第2页 / 共46页
数据结构教案Word下载.docx_第3页
第3页 / 共46页
数据结构教案Word下载.docx_第4页
第4页 / 共46页
数据结构教案Word下载.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

数据结构教案Word下载.docx

《数据结构教案Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构教案Word下载.docx(46页珍藏版)》请在冰豆网上搜索。

数据结构教案Word下载.docx

3.数据对象、数据结构

4.四类基本结构:

集合、线性结构、树形结构、图形结构或网状结构。

5.数据结构一般包括三方面的内容:

逻辑结构

存储结构(物理结构)

数据的运算

算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构。

6.数据的两种存储结构:

顺序存储结构

链式存储结构

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

类C语言

1.4算法和算法分析

1.4.1算法

算法的定义

算法具有五个重要特性:

有穷性、确定性、可行性、输入、输出

1.4.2算法设计的要求

正确性,可读性,健壮性,高效率低存储

1.4.3算法效率的度量

时间复杂度

1.4.4算法的存储空间需求

空间复杂度

白银市第一中学桑慧琴

数据结构

第2--3次

2.1—2.2

线性表的逻辑结构及运算

线性表的顺序存储及其运算实现

掌握线性表的逻辑结构及运算,线性表的顺序存储结构及其运算的实现

线性表的顺序存储结构及其运算的实现

线性表的顺序存储结构及其运算

第2章线性表

线性结构的特点

2.1线性表的类型定义

1.线性表的定义

(a1,…,ai-1,ai,ai+1,…an)

2.定义在逻辑结构上的运算

表的初始化、求表长、取表中的结点、查找结点、插入结点和删除结点等

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

例1:

扩大线性表LA,将存在于线性表LB中而不在LA中的数据元素加入到线性表LA中。

算法思想:

逐一取出LB中的元素,判断是否在LA中,若不在,则插之。

例2:

线性表LA和LB是非递减的,将两表合并成新的线性表LC,且LC也是非递减的。

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

1、线性表的顺序表示:

指的是用一组地址连续的存储单元依次存储线性表的数据元素。

用物理位置来表示逻辑结构。

LOC(ai+1)=LOC(ai)+l

LOC(ai)=LOC(a1)+(i-1)*l

2、顺序表的特点:

随机存取

3、线性表的动态分配顺序存储结构(用一维数组)

#defineLIST_INIT_SIZE100

#defineLISTINCREAMENT10

typedefstruct{

ElemType*elem;

intlength;

intlistsize;

}SqList;

4、顺序表的运算

顺序表容易实现访问操作,可随机存取元素。

但插入和删除操作主要是移动元素。

⑴初始化操作

⑵插入操作

(3)删除操作

第3周

2.3.1节

单链表存储及其运算

掌握单链表存储结构及运算的实现。

建立单链表及实现结点的插入和删除等基本运算

关键:

单链表存储结构定义

难点:

基本运算的实现

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

2.3.1线性链表

1、线性表的链式存储结构的特点

相关概念:

结点(Node)、数据域、指针域、指针、链、头指针

2、链式存储结构的优点:

插入、删除操作是不再需要移动大量的元素,但失去了顺序表的可随机存取特点。

链表的分类

单链表、循环链表和双向链表。

3.单链表:

(1)单链表概念:

链表中的每一个结点中只包含一个指针域的称为单链表或线性链表。

第5次

2.3.2—2.3.3

循环链表、双向链表、静态链表

掌握循环链表、双链表及静态链表存储结构及其运算实现

循环链表及双链表存储结构及其运算实现

循环链表、双向链表的相关运算

2.3.2循环链表

1、循环链表:

特点:

表中最后一个结点的指针域指向头结点,整个链表形成一个环。

循环链表可分为单链和多链的。

2、循环链表的操作:

和线性链表基本一致,差别仅在于循环条件判定是否为空改为是否为头指针。

2.3.3双向链表

1、双向链表:

在双向链表的结点中有两个指针域,分别指向前驱和后继。

双向链表也可以有循环链表。

2、双向链表存储结构定义:

typedefstructDuLNode{

ElemTypedata;

structDuLNode*prior;

structDuLNode*next;

}DuLNode,*DuLinklist;

3、双向链表的操作:

双指针使得链表的双向查找更为方便、快捷。

NextElem和PriorElem的执行时间为O

(1)。

仅需涉及一个方向的指针的操作和线性链表的操作相同。

插入和删除需同时修改两个方向的指针。

4、双向链表的插入操作

1)pnext=q

2)pprior=qprior

3)qpriornext=p

4)qprior=p

2.3.4静态单链表

1.特点:

用数组描述的链表称为静态链表。

2.存储结构定义:

#defineMAXSIZE1000

ElemTypedata;

intcur;

}component,SLinklist[MAXSIZE];

3.运算实现

静态链表的操作和动态链表相似。

以整型游标代替动态指针。

第6-7次

实验1

单链表的建立及相关操作

掌握c上机调试的基本方法。

了解单链表的结构特点及相关概念,

掌握单链表结点链接等相关知识。

单链表的建立

[实验要求]

1、建立一个单链表。

2、并在指定的位置完成插入、删除运算。

3、并方向输出插入、删除结点后的单链表。

第8次

3.1节

栈的定义表示及应用

掌握栈的逻辑结构,存储结构及各种存储结构之上基本运算

栈的顺序存储及基本运算的实现

顺序栈基本运算的实现

第3章栈和队列

3.1栈

3.1.1栈的定义

限定仅在表尾进行插入或删除的线性表

栈顶:

表尾

栈底:

表头

3.1.2栈的表示和实现

1.顺序栈

(1)类型说明:

#defineSTACK_INIT_SIZE100

#defineSTACKINCREMENT10

SElemType*base,*top;

intstacksize;

}SqStack;

(2)重要算法的实现:

●入栈操作

●取栈顶元素操作

取栈顶元素与出栈不同之处在于出栈操作改变栈顶指针top的位置,而取栈顶元素操作不改

●出栈操作

●判栈空操作

2.链栈

一个链栈可由栈顶指针top唯一确定,当top为NULL时,是一个空栈。

第9次

第4周

3.4节

队列的定义表示及实现

掌握队列的逻辑结构,存储结构及各种存储结构之上基本运算的实现

队列的逻辑结构,存储结构及各种存储结构之上基本运算的实现

循环队列

3.4队列

3.4.1抽象数据类型队列的定义

允许在线性表的一端插入,另一端进行删除操作的线性表称为队列.

队尾,队头,双向队列

3.4.2链队列

1、单链队列—队列的链式存储结构:

typedefstructQNode

{QElemtypedata;

structQNode*next;

}Qnode,*QueuePtr;

{QueuePtr*front,*rear;

}LinkQueue;

2、链队列的算法:

算法一:

构造一个空队列

算法二:

销毁一个队列

算法三:

判队列是否为空:

算法四:

入队列

算法五:

出队列

3.4.3循环队列

1.存储结构

#defineMAXQSIZE100

QelemType*base;

intfront;

//头指针,若队列不空,指向队列头元素

intrear;

//尾指针,若队列不空,指向队列尾元素的下一个位置

}SqQueue;

3.循环队列的重要算法:

队列长度

intQueueLength(SqQueueQ)

{return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;

}

算法三、循环队列的入队列:

队列满条件:

(Q.rear+1)%MAXQSIZE==Q.front

算法四、循环队列出队列:

第10次

第5周

3.2,3.5

栈和队列的应用

掌握栈和队列的应用

栈的应用

3.2栈的应用

数据转换

递归

3.5队列的应用

银行排队

找舞伴

第11次

4.1—4.2

串的基本概念、存储及算法实现

掌握串的类型定义及不同存储结构之上基本运算的实现

串不同存储方式下的运算

字符串的运算

第4章串

4.1串类型的定义

1.串的概念

由零个或多个字符组成的有限序列。

一般记作s=‘c0c1c2…cn-1(n≥0)

2.串的基本运算

(1)求字符串的长度的运算strlen(str)

(2)字符串拷贝(赋值)strcpy(str1,str2):

(3)字符串的联接strcat(str1,str2):

(4)子串的查询strstr(str1,str2):

(5)字符串的比较strcmp(str1,str2):

(6)求子串substr(str1,str2,m,n):

(7)字符串的删除delstr(str,m,n):

(8)字符串的插入Insstr(str1,m,str2):

(9)字符串的替换replacestr(str1,i,j,str2)

4.2串的表示和实现

4.2.1定长顺序存储表示

#defineMAXSTRLEN255

typedefunsignedcharSString[MAXSTRLEN+1];

//0号单元存放串的长度

串的实际长度可在这预定义长度范围内随意,超过预定义长度的串值则被“截断”

串联接Concat(&

T,S1,S2)

算法二:

求子串SubString(&

Sub,S,pos,len)

4.2.2.堆分配存储表示

typedefstruct{

{char*ch

intlength;

}HString

4.2.3串的块链存储表示

定义:

#defineCHUNKSIZE80

typedefstructChunk{

{charch[CHUNKSIZE];

structChunk*next;

}Chunk;

Chunk*head,*tail;

intcurlen;

}LString;

存储密度=串值所占的存储位/实际分配的存储位

第12次

第6周

4.3—4.4

串的应用

学会串运算的算法

串的模式匹配算法实现

串的模式匹配算法

算法1、字符串的插入操作insstr(str1,i,str2)

算法2、字符串的删除delstr(str,i,j)

算法3、求子字符串算法

算法4、串的模式匹配算法

第13-14次

实验2

判断字符串是否中心对称

学会用c调试程序

综合所学的链表、栈、队列和串的知识

串的操作

实验2判断字符串是否中心对称

[实验要求]

1、从键盘输入数据并将它们建立一种数据结构

2、并通过某种方法判断字符串是否中心对称,输出判断结果

第15次

5.1—5.3.1

数组的定义、顺序表示及特殊矩阵的压缩存储

掌握数组的定义及数组的顺序存储结构;

学习特殊矩阵的压缩存储方法及实现

数组的定义及数组的顺序存储结构

特殊矩阵的压缩存储

第5章数组

5.1数组的定义

1、多维数组的概念

多维数组中每个元素都是数组.

2、一维数组

一维数组可以看成是一个线性表或一个向量,适合于随机查找。

3、二维数组

二维数组可以看成是向量的推广。

二维数组中的每一个元素最多可有两个直接前驱和两个直接后继(边界除外),故是一种典型的非线性结构。

4、三维数组

三维数组最多可有三个直接前驱和三个直接后继

三维以上数组可称为多维数组,可有多个直接前驱和多个直接后继,是一种非线性结构

5.2数组的顺序表示和实现

数组一般不作插入和删除操作,宜采用顺序存储结构

1、存放规则

行优先

列优先

2.地址计算

(1)二维数组:

LOC(aij)=LOC(a00)+(i×

n+j)×

l。

(3)三维数组:

LOC(aijk)=LOC(a000)+(i×

p+j×

p+k)×

L。

5.3矩阵的压缩存储

5.3.1特殊矩阵及其压缩存储

1.对称矩阵

2.三角矩阵

(1)上三角矩阵

(2)下三角矩阵

(3)对角矩阵

第16次

第7周

5.3.2—5.5

稀疏矩阵的压缩存储

广义表的定义、表示及存储

学习稀疏矩阵的压缩存储

学习广义表的定义、表示及存储

稀疏矩阵的压缩存储:

三元组表和十字链表

广义表的定义、基本操作(取表头、表尾)

广义表的基本操作(取表头、表尾)

5.3.2稀疏矩阵的压缩存储:

1.三元组表

2.带行指针的链表

3.十字链表

5.4广义表的定义

1.广义表的定义

2.广义表的表示方法

3.广义表的分类

(1)线性表:

(2)纯表

(3)再入表:

(4)递归表:

4.广义表的深度

一个广义表的深度是指该广义表展开后所含括号的层数。

5、广义表的长度:

表中包含原子个数,或者原子和子表的个数和或子表的个数。

6.广义表举例

7、广义表的运算

(1)、求广义表的头

head(表名)

(2)、求广义表的表尾

tail(表名)

5.5广义表的存储结构

采用链接存储方法

头尾链表:

扩展链表:

第17次

6.1—6.2.2

树的基本知识,二叉树的概念和性质

学习树的基本概念

掌握二叉树的基本概念和性质

二叉树的性质

二叉树的性质

树形结构的概念

第6章树与二叉树

6.1树的定义和基本术语

1.树的定义

2.树的常用术语

结点的度

树的度

儿子结点

父亲结点

兄弟结点

3.树的表示形式

4.树形结构的逻辑结构

树形结构的逻辑特征可用树中结点之间的父子关系来描述

树形结构是非线性结构

6.2二叉树

6.2.1二叉树的定义

二叉树的五种基本形态:

6.2.2二叉树的重要性质

性质1、在二叉树中的第i层上最多有的结点数为2i-1个结点。

(i≥1)

性质2、深度为k的二叉树至多有2k-1个结点(i≥1)

性质3、在任意二叉树中,若叶子结点(即度为零的结点)的个数为n0,度为1的结点个数为n1,度为2的结点个数为n2,则有n0=n2+1

性质4:

具有n个结点的完全二叉树树深为log2n+1

性质5、对于完全二叉树,对其结点采用“按层编号”比较方便,即从根结点开始由上而下逐层给结点编号,同一层的结点由左向右编号。

•对于完全二叉树中任一个编号为i的结点(1≤i≤n),它的父结点和左、右儿子结点的编号与i值有如下的关系:

1)如果i=1,则它是整个树的根结点,无父结点;

2)若i>

1,则其父结点编号为。

3)如果2i≤n,则其左儿子结点编号为2i;

若2i>

n,则无左儿子结点。

4)如果(2i+1)≤n,则其右儿子结点编号为(2i+1);

反之,则无右儿子结点。

第18次

第8周

6.2.3—6.3.1

二叉树的存储、遍历二叉树

掌握二叉树的存储结构

掌握二叉树的三种遍历方式

掌握遍历算法的应用

二叉树遍历算法

遍历算法的应用

6.2.3、二叉树的存储结构

1、顺序存储

适合于存储完全二叉树来说

2、链式存储结构

(1)二叉树的二叉链表存储:

typedefstructBiTNode{

TElemTypedata;

StructBiTNode*lchild,*rchile;

}BiTNode,*BiTree;

(2)二叉树的三叉链表存储

StructBiTNode*lchil

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

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1