当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

重庆移通学院:《数据结构》课程教学资源(教程讲义,共二十八课,闫会峰)

资源类别:文库,文档格式:DOC,文档页数:129,文件大小:2.65MB,团购合买
点击下载完整版文档(DOC)

数据结构教程第一课数据结构的基本概念和术语 本课主数据结构的基本概念和术语 教学月的:了解数据结构的基本概念,理解常用术语 教学重点:基本概念:数据与数据元素 教学难点:数据元素间的四种结构关系。 授课内容 、数据、数据元、数据对象、数据结构的定义 1、数据的定义 定义一:数据是客观事物的符号表示。 文 数学 C语言 6201001 张三 6201002 李四 6201003 王五 87 74 6201004 例:张三的C语言考试成绩为92分,92就是该同学的成绩数据。 定义二:能输入到计算机中并被计算机程序处理的符号的总称。 图像、声音等。 macy POWERBUILDER 总结:现实世界信息的分析、复制、传播首先要符号化,这样才便于处理,尤其是便于计算机的处理。 家长、社会要了解一个学生的学习成绩和能力,要看他的学习档案,而学习档案即是说明该学生学习情况 的数据

数据结构教程 第一课 数据结构的基本概念和术语 本课主题:数据结构的基本概念和术语 教学目的:了解数据结构的基本概念,理解常用术语 教学重点:基本概念:数据与数据元素 教学难点:数据元素间的四种结构关系。 授课内容: 一、数据、数据元素、数据对象、数据结构的定义 1、数据的定义 定义一:数据是客观事物的符号表示。 学号 姓名 语文 数学 C 语言 6201001 张三 85 54 92 6201002 李四 92 84 64 6201003 王五 87 74 73 6201004 ... 例:张三的 C 语言考试成绩为 92 分,92 就是该同学的成绩数据。 定义二:能输入到计算机中并被计算机程序处理的符号的总称。 例:图像、声音等。 总结:现实世界信息的分析、复制、传播首先要符号化,这样才便于处理,尤其是便于计算机的处理。 家长、社会要了解一个学生的学习成绩和能力,要看他的学习档案,而学习档案即是说明该学生学习情况 的数据

2、数据元素、数据项 数据元素是数据的基本单位,它也可以再由不可分割的数据项组成。如图示 学号 姓名文、数学Ci语言 620m 6201002 四 201003 王五 个数据元素 6201004 一个数据项 个表记录的是学生成绩数据,单个 生的成绩是其中的一个数据元 3、数据对象 是性质相同的数据元素的集合。如上例 班级的成绩表可以看作一个数据对象 4、数据结构 定义一、数据元素集合(也可称数据对象)中各元素的关系 定义二、相互之间存在特定关系的数据元素集合。 据结构的种类: 同属色彩集合 蓝色 元素间为松散的关系 红色 黄色 线性结构元素间为严格的一对一关系 如上面的成绩表中各元素

2、数据元素、数据项 数据元素是数据的基本单位,它也可以再由不可分割的数据项组成。如图示: 3、数据对象 是性质相同的数据元素的集合。如上例:一个班级的成绩表可以看作一个数据对象。 4、数据结构 定义一、数据元素集合(也可称数据对象)中各元素的关系。 定义二、相互之间存在特定关系的数据元素集合。 数据结构的种类: 特征 示例 集合 元素间为松散的关系 线性结构 元素间为严格的一对一关系 如上面的成绩表中各元素

一对多炅、祖 树形结构元素间为严格的一对多关系 父炅炅 炅炅子 多对多 北京 图状结构(或网 元素间为多对多关系 状结构) 合肥一连云港一上海 南京 公路交通网 数据结构的形式定义 数据结构名称=(D,S) 其中D为数据元素的有限集,S是D上关系的有限集 数据结构"定义中的关系指数据间的逻辑关系,故也称数据结构 逻辑结构 为逻辑结构 存储结构 顺序存储结构 数据结构在计算机中的表示称为物理结构。又称存储结构。 链式存储结构 存储结构详解 计算机中存储信息的最小单位:位,8位为一字节,两个字节为一字,字节、字或更多的二进制位可 称为位串。在逻辑描述中,把位串称为元素或结点 当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域( Data Field) 例:上述成绩表数据用C语言的结构体数组 classonestul50]来存储 struct stu int stung;/*数据项,也称stu位串中的一个子位串,或叫做数据域* char name[20]: int language

树形结构 元素间为严格的一对多关系 图状结构(或网 状结构) 元素间为多对多关系 数据结构的形式定义: 数据结构名称=(D,S) 其中 D 为数据元素的有限集,S 是 D 上关系的有限集 逻辑结构 “数据结构”定义中的“关系”指数据间的逻辑关系,故也称数据结构 为逻辑结构。 存储结构 顺序存储结构 数据结构在计算机中的表示称为物理结构。又称存储结构。 链式存储结构 存储结构详解: 计算机中存储信息的最小单位:位,8 位为一字节,两个字节为一字,字节、字或更多的二进制位可 称为位串。在逻辑描述中,把位串称为元素或结点。 当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域(Data Field)。 例:上述成绩表数据用 C 语言的结构体数组 classonestu[50]来存储: struct stu { int stuno;/*数据项,也称 stu 位串中的一个子位串,或叫做数据域*/ char name[20]; int maths; int language;

3 classonestu [50 二、数据类型 1、定义:数据类型是一个值的集合和定义在这个值集上的一组*作的总称 例:C语言中的整型,其内涵为一定范围的自然数集合,及定义在该集合上的加减乘除及取模、比较 大小*作。而实型则无取模*作。当然整型也不需四舍五入 2、数据类型的种类: 特征 例 原子类型 值在逻辑上不可分解 int float 结构类型值由若干成分按某种结构组成 struct stu 数据类型封装了数据存储与*作的具体细节 数据->数据元素 具有特定关系的数据元素集合->数据结构 数据结构的逻辑表示与物理存储->逻辑结构与存储结构 人们不仅关心数据的逻辑结构、存储结构,还关心数据的处理方法(算法)与处理结果->数据类型 数据类型->分类 数据结构教程第二课抽象数据类型的表示与实现 本课主题抽象数据类型的表示与实现 教学目的了解抽象数据类型的定义、表示和实现方法 教学重点:抽象数据类型表示法、类C语言语法 教学圈点:抽象数据类型表示法 捉课内 、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传 关系

int c_language; } classonestu[50]; 二、数据类型 1、定义:数据类型是一个值的集合和定义在这个值集上的一组*作的总称。 例:C 语言中的整型,其内涵为一定范围的自然数集合,及定义在该集合上的加减乘除及取模、比较 大小*作。而实型则无取模*作。当然整型也不需四舍五入。 2、数据类型的种类: 特征 例 原子类型 值在逻辑上不可分解 int float 结构类型 值由若干成分按某种结构组成 struct stu 数据类型封装了数据存储与*作的具体细节。 三、总结 数据->数据元素 具有特定关系的数据元素集合->数据结构 数据结构的逻辑表示与物理存储->逻辑结构与存储结构 人们不仅关心数据的逻辑结构、存储结构,还关心数据的处理方法(算法)与处理结果->数据类型 数据类型->分类 数据结构教程 第二课 抽象数据类型的表示与实现 本课主题: 抽象数据类型的表示与实现 教学目的: 了解抽象数据类型的定义、表示和实现方法 教学重点: 抽象数据类型表示法、类 C 语言语法 教学难点: 抽象数据类型表示法 授课内容: 一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传 关系

定义:一个数学模型以及定义在该模型上的一组*作。 关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如 何存储。 例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第 一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些*作:插入一个元素、删除一个 元素等。 抽象数据类型分类 原子类型 值不可分解,如int 固定聚合类型 值由确定数目的成分按某种结构组成,如复数 可变聚合类型 值的成分数目不确定如学生基本情况 抽象数据类型表示法 三元组表示:(D,S,P 其中D是数据对象,S是D上的关系集,P是对D的基本*作集 、书中的定义格式: ADT抽象数据类型名 数据对象: 数据关系: 基本*作: ADT抽象数据类型名 例:线性表的表示 线性表 数据对象 D=ail ai( -Elem Set, i=1, 2, n, n>=01 任意数据元素的集合 除第一个和最后一个外,每个元 数据关系 R1={|ai1,a(-Di=2…,n} 素有唯一的直接前趋和唯一的直 接后继 基本*作 ListInsert(&L, i, e) L为线性表,i为位置,e为数据

定义:一个数学模型以及定义在该模型上的一组*作。 关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如 何存储。 例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第 一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些*作:插入一个元素、删除一个 元素等。 抽象数据类型分类 原子类型 值不可分解,如 int 固定聚合类型 值由确定数目的成分按某种结构组成,如复数 可变聚合类型 值的成分数目不确定如学生基本情况 抽象数据类型表示法: 一、 三元组表示:(D,S,P) 其中 D 是数据对象,S 是 D 上的关系集,P 是对 D 的基本*作集。 二、书中的定义格式: ADT 抽象数据类型名{ 数据对象: 数据关系: 基本*作: }ADT 抽象数据类型名 例:线性表的表示 名称 线性表 数据对象 D={ai| ai(-ElemSet,i=1,2,...,n,n>=0} 任意数据元素的集合 数据关系 R1={| ai-1,ai(- D,i=2,...,n} 除第一个和最后一个外,每个元 素有唯一的直接前趋和唯一的直 接后继 基本*作 ListInsert(&L,i,e) L 为线性表,i 为位置,e 为数据

类C语 类C语言语法示例 #define true 1 define false o 1、预定义常量和 #define ok 1 RROR O 类型 #define infeasible-1 #define overFlow-2 typedef in Status;/ Status是函数的类型,其值是函数结果状态代码 2、数据结构的存 typedef ElemType first 储结构 函数类型函数名(函数参数表){ 3、基本*作的算 ∥/算法说明 语句序列 /函数名 简单赋值 变量名≡表达式 串联赋值: 变量名1=变量名2=…=变量名k=表达式 (变量名1,…,变量名k)=(表达式1,…,表达式k); 结构名=结构名 4、赋值语句 成组赋值 结构名=(值1,…,值k) 变量名[]=表达式 变量名[起始下标终止下标]=变量名[起始下标终止下标] 交换赋值 变量名<>变量名 条件赋值 变量名=条件表达式?表达式?表达式T:表达式F 1、f(表达式)语句 else语句 3、 switch(表达式){ case值1:语句序列1: break; 5、选择语句 case值n:语句序列n: break; defau:语句序列n+1: break

ListDelete(&L,i,e) 元素。 ... 二、类 C 语言语法 类 C 语言语法示例 1、预定义常量和 类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef in Status; //Status 是函数的类型,其值是函数结果状态代码。 2、数据结构的存 储结构 typedef ElemType first; 3、基本*作的算 法 函数类型 函数名(函数参数表){ //算法说明 语句序列 }//函数名 4、赋值语句 简单赋值: 变量名=表达式; 串联赋值: 变量名 1=变量名 2=...=变量名 k=表达式; 成组赋值: (变量名 1,...,变量名 k)=(表达式 1,...,表达式 k); 结构名=结构名; 结构名=(值 1,...,值 k); 变量名[]=表达式; 变量名[起始下标..终止下标]=变量名[起始下标..终止下标]; 交换赋值: 变量名变量名; 条件赋值: 变量名=条件表达式?表达式?表达式 T:表达式 F 5、选择语句 1、if(表达式) 语句; 2、if(表达式) 语句; else 语句; 3、switch(表达式){ case 值 1:语句序列 1;break; ... case 值 n:语句序列 n;break; default:语句序列 n+1;break; } 4、switch{

case条件1:语句序列1: break; 条件n:语句序列n ult:语句序列n+1 for(赋初值表达式:条件;修改表达式序列)语句 6、循环语句 Whle(条件)语句 do{语句序列} while(条件) retum[表达式]: 7、结束语句 um;//函数结束语句 break;//case结束语句 exit(异常代码);∥/异常结束语句 8、输入和输出语 scanf([格式串],变量1,…,变量n) 9、注释 ∥/文字序列 10、基本函数 max(表达式1 min, abs, floor, ceil, eof, eoln 11、逻辑运算 &&与运算:|运算 例:线性表的实现 数据对象:D={ ail ai(( Elem set.i=1,2…,nn>=0 数据关系:R1={|a-1,a(-Di=2…,n} 基本*作 InitList(&L) ListInsert(&L, i, e) ListDelete(&L,i, &e) ListInsert(List &L, int i, Elem Type e) [if(iLength+)return ERROR n1])

case 条件 1:语句序列 1;break; ... case 条件 n:语句序列 n;break; default:语句序列 n+1;break; } 6、循环语句 for(赋初值表达式;条件;修改表达式序列)语句; while(条件)语句; do{ 语句序列}while(条件); 7、结束语句 return [表达式]; return; //函数结束语句 break; //case 结束语句 exit(异常代码); //异常结束语句 8、输入和输出语 句 scanf([格式串],变量 1,...,变量 n); 9、注释 //文字序列 10、基本函数 max(表达式 1,...,表达式 n) min,abs,floor,ceil,eof,eoln 11、逻辑运算 &&与运算;||或运算 例:线性表的实现: ADT List{ 数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0} 数据关系: R1={| ai-1,ai(- D,i=2,...,n} 基本*作: InitList(&L) DestroyList(&L) ListInsert(&L,i,e) ListDelete(&L,i,&e) }ADT List ListInsert(List &L,int i,ElemType e) {if(iL.length+) return ERROR; q=&(L.elem[i-1]);

for(p=&(L elem[L length -1D: p>=g-p)*(p+1=*p q=e ++Length tum OK: 下面是C语言编译通过

for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return OK; } 下面是 C 语言编译通过的示例:

define error o define OK 1 struct STU I char name[20]: char stun[10] int age; int score stu[50] struct LIST I struct STU stu[50]; nt length JL: int printlist(struct LIST L) I int i; printf( name stun age scoreIn"); for(i=0; iL->length+1) return Error: &(L→>stu[i-1]) for(p=&L→stu[L→> length-1];p>=q;-p) (p+1)=*; *q=e; ++L->length; return OK: y/Listinsert Before i*/ maino I struct STU e L length=0; strcpy(e. name, zmofun"); strcpy(e. stun, 100001 ); eage=80 e score=1000: listinsert(&L,1, e) printlist(L); printf("List length now is %d InIn", L length); strcpy(e. name, bobin") strcpy(e. stun, 100002 );

#define ERROR 0 #define OK 1 struct STU { char name[20]; char stuno[10]; int age; int score; }stu[50]; struct LIST { struct STU stu[50]; int length; }L; int printlist(struct LIST L) { int i; printf("name stuno age score\n"); for(i=0;iL->length+1) return ERROR; q=&(L->stu[i-1]); for(p=&L->stu[L->length-1];p>=q;--p) *(p+1)=*p; *q=e; ++L->length; return OK; }/*ListInsert Before i */ main() { struct STU e; L.length=0; strcpy(e.name,"zmofun"); strcpy(e.stuno,"100001"); e.age=80; e.score=1000; listinsert(&L,1,e); printlist(L); printf("List length now is %d.\n\n",L.length); strcpy(e.name,"bobjin"); strcpy(e.stuno,"100002");

eage=80 e score=1000 listinsert(&L, 1, e) printlist(L) printf("List length now is %dInIn, Llength);

e.age=80; e.score=1000; listinsert(&L,1,e); printlist(L); printf("List length now is %d.\n\n",L.length); }

点击下载完整版文档(DOC)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共129页,可试读30页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有