第1章绪论数据结构形成和发展的背景1.1什么是数据
绪论 数据结构讲义
性别 男 女 女 男 男 男 女
班号 9901 9902 9901 9902 9901 9902 9901
表中的记录顺序反映了数据元素之间的逻辑关 系, 用学号标识每个学生记录,这种逻辑关系可以表 示为:
<1,8>,<8,34>,<34,20>,<20,12>,
<12,26>,<26,5>
其中,尖括号<ai,ai+1>表示。 元素ai和ai+1之间是相邻的,即ai在ai+1之前,ai+1 在ai之后。
对于head为首结点指针的链表,从head所指结 点开始比较,head->no不等于20,从它的next得到 下 一 个 结 点 的 地 址 , 再 与 下 一 个 结 点 的 no 域 比 较,…,直到某结点的no域等于20,返回其name域。
数据结构的二元组表示
为了更确切地描述一种数据结构,通常采 用二元组表示:
优点:
便于修改,在进行插入、删除运算时,仅需修 改相应结点的指针域,不必移动结点。
缺点:
存储空间的利用率较低。
只能对结点进行顺序存取。
(3)索引存储方法
在存储结点信息的同时,还建立附加的索引表。 索引表中索引项的形式:(关键字,地址),关键字惟 一标识一个结点,地址作为指向结点的指针。 优点:
这种带有索引表的存储结构可以大大提高数据查 找的速度。
} ADT Complex
1.2 算法及其描述
1 什么是算法 2 算法描述
1.2.1 什么是算法
数据元素之间的关系有逻辑关系和物 理关系,对应的操作有逻辑结构上的操作 功能和具体存储结构上的操作实现。
数据结构(第二版)课后习题答案(王红梅主编)
数据结构(第二版)课后习题答案(王红梅主编)第1 章绪论课后习题讲解1. 填空⑴(数据元素)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据元素⑵(数据项)是数据的最小单位,(数据元素)是讨论数据结构时涉及的最小数据单位。
,数据结构指的是数据元素以及数据元素之间的关系。
⑶ 从逻辑关系上讲,数据结构主要分为(集合)、(线性结构)、(树结构)和(图结构)。
,,,⑷ 数据的存储结构主要有(顺序存储结构)和(链接存储结构)两种基本方法,不论哪种存储结构,都要存储两方面的内容:(数据元素)和(数据元素之间的关系)。
⑸ 算法具有五个特性,分别是(有零个或多个输入)、(有一个或多个输出)、(有穷性)、(确定性)、(可行性)。
,,,,⑹ 算法的描述方法通常有(自然语言)、(程序设计语言)、(流程图)和(伪代码)四种,其中,(伪代码)被称为算法语言。
,,,,⑺ 在一般情况下,一个算法的时间复杂度是(问题规模)的函数。
⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(Ο(1) ),若为n*log25n,则表示成数量级的形式为(Ο(nlog2n))。
,用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴ 顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
A 树B 图C 线性表D 集合B将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图。
第1章绪论数据结构形成和发展的背景1.1什么是数据
(4)赋值语句有 简单赋值:变量名=表达式; 串联赋值:变量名1=变量名2=……=变量名k=表达式; 成组赋值: (变量名1,…,变量名k)=(表达式1,…,表达式k); 结构名=结构名; 结构名=(值1,值2,…,值k); 变量名[]=表达式; 变量名[起始下标..终止下标]=变量名[起始下标..终止下标]; 变换赋值:变量名 变量名; 条件赋值:条件表达式?表达式T : 表达式F;
a
b
c
d
e
f
g
h
图 1-5
树形结构抽象描述示意图
例 :设一个数据结构的抽象描述为D=(K,R),其中 K={1,2,3,4},而R={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}, 则它的逻辑结构用图描述见图。
1
2
3 图 1-6
4 图形结构抽象描述示意图
数据结构在计算机中的表示称为数据的物理结构,又 称为存储结构。 在计算机中,我们可以用一个由若干位组合起来形成 的一个位串表示一个数据元素,通常称这个位串为元 素或结点 当数据元素有若干个数据项组成时,位串中对应于各 个数据项的子串称为数据域
(8)输入和输出语句有 输入语句 scanf(变量1,…,变量n); 输出语句 printf(表达式1,…,表达式n);
(9)注释 单行注释
//文字序列
(10)基本函数有 求最大值 求最小值 求绝对值 求不足整数值 求进位整数值 判定文件结束 判定行结束
max(表达式1,…,表达式n) min(表达式1,…,表达式n) abs(表达式) floor(表达式) ceil(表达式) eof(文件变量) 或eof eoln(文件变量)或 eoln
例:抽象数据类型三元组的定义: ADT Triplet{ 数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet} 数据关系:R1={<e1,e2>,<e2,e3>} 基本操作: InitTriplet(&T,v1,v2,v3)
01数据结构——绪论
01数据结构——绪论⼀、数据结构绪论1.1 数据结构数据结构是⼀门研究⾮数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
1.2 基本概念和术语数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输⼊给计算机处理的符号集合。
数据不仅仅包括整形、实型等数值类型,还包括字符及声⾳、图像、视频等⾮数值类型。
数据元素数据元素是组成数据的、有⼀定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
⽐如动物类中,⽜、马、⽺、鸡、鸭、鹅就是其数据元素。
数据项⼀个数据元素可以由若⼲数据项组成。
数据项是数据不可分割的最⼩单位。
⽐如⼈这样的数据元素,有眼、⽿、⿐、⼝、⼿、脚这些数据项,也可以有姓名、年龄、性别、出⽣地址、联系电话等数据项,具体哪些数据项,要根据你的系统决定。
数据对象数据对象是性质相同的数据元素的集合,是数据的⼦集。
所谓性质相同,是指数据元素具有相同数量和类型的数据项,⽐如⼈都有姓名,性别,⽣⽇等相同的数据项。
数据结构数据结构是相互之间存在⼀种或多种特定关系的数据元素的集合。
研究数据结构的意义:在计算机中,数据元素不是孤⽴、杂乱⽆序的,⽽是具有内在联系的数据集合。
数据元素之间存在的⼀种或多种特定关系,也就是数据的组织形式。
为编写⼀个好的程序,必须分析待处理对象的特性及各处理对象之间存在的关系。
这也就是研究数据结构的意义所在。
1.3 逻辑结构和物理结构:按照视点的不同,可以把数据结构分为逻辑结构和物理结构。
逻辑结构逻辑结构是指数据对象中数据元素之间的相互关系。
逻辑结构分为以下四种:集合结构:集合结构中的数据元素除了同属于⼀个集合外,它们之间没有其他关系。
各个数据元素是“平等”的,它们的共同属性是同属于⼀个集合。
集合结构线性结构:线性结构中的数据元素是⼀对⼀的关系。
线性结构树形结构:树形结构中的元素之间存在⼀种⼀对多的层次关系。
树形结构图形结构:图形结构的数据元素是多对多的关系。
数据结构(C语言版)第1章 绪论
(C语言版 语言版) 语言版
主讲教师: 吴让仲 主讲教师:
Instructor: WU, RANGZHONG E-mail: wurangzhong@
1/68
教材 (Text Book) 数据结构(C语言版 数据结构 语言版) 语言版
17/68
逻辑结构的分类
数据的逻辑结构是本质,可以分为: 数据的逻辑结构是本质,可以分为: 线性结构和 线性结构和非线性结构 也可以分为 集合 结构中的数据元素除了同属于一种类型外,别无 结构中的数据元素除了同属于一种类型外, 其它关系. 其它关系. 线性结构 结构中的数据元素之间存在一对一的关系. 结构中的数据元素之间存在一对一的关系. 树型结构 结构中的数据元素之间存在一对多的关系. 结构中的数据元素之间存在一对多的关系. 图状结构或网状结构 结构中的数据元素之间存在多对 多的关系. 多的关系.
数据结构发展简史
作为独立课程国外1968年开始设立. 作为独立课程国外1968年开始设立. 1968年开始设立 1968年美国KNUTH教授开创了数据结构的最初 1968年美国KNUTH教授开创了数据结构的最初 年美国KNUTH 体系. 体系. 计算机专业的专业基础课. 计算机专业的专业基础课. 非计算机专业的主要选修课. 非计算机专业的主要选修课.
25/68
数据结构课程的内容
数据结构是介于数学,计算机硬件和计算机软 数据结构是介于数学,计算机硬件和 数学 件之间的一门计算机科学与技术专业的核心课 是编译原理,操作系统,数据库, 程,是编译原理,操作系统,数据库,人工智 能等课程的基础.同时,数据结构技术也广泛 能等课程的基础.同时, 应用于信息科学,系统工程, 应用于信息科学,系统工程,应用数学以及各 信息科学 种工程技术领域. 种工程技术领域. 数据结构课程的先修课程有高级语言程序设计 和离散数学. 和离散数学
数据结构讲义—绪论
2023/3/5
21
1.4 算法和算法分析
❖ 以下是最常用的计算算法时间的多项式,其关系 为:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)< O(2n)<O(n!)<O(nn)
4000 3000 2000 1000
0 0
n3
2n
2 5n2
100n
200log2n
10
2023/3/5
17
1.4 算法和算法分析
❖ 一个算法是由控制结构(顺序、分支和循环3种) 和原操作(指固有数据类型的操作)构成的,算 法时间取决于两者的综合效果。
❖ 一般情况下,算法中基本操作重复执行的次数是 问题规模n的某个函数,算法的时间量度记作 T(n)=O(f(n)),称作算法的渐近时间复杂度。
Eg. 整数的数据对象是{…-2,-1,0,1,2,…}
英文字符类型的数据对象是{A,B,C,D,E,F,…}
❖ 数据对象可以是有限的,也可以是无限的。
❖ 数据结构不同于数据类型,也不同于数据对象,它不仅要描
述数据类型的数据对象,而且要描述数据对象各元素之间的
相互关系。
2023/3/5
11
1.2 基本概念和术语
逻辑运算:&&、||
2023/3/5
14
1.4 算法和算法分析
1.4.1 算法的概念及特性
❖ 算法:一个有穷的指令集,这些指令为解决某一 特定任务规定了一个运算序列。一个算法可以看
作是一系列将输入转换为输出的计算步骤。
❖ 算法的特性:
(1)有穷性 算法应在执行有穷步后结束;
(2)确定性 每步定义都是确切、无歧义的;
数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案
3 .简述逻辑结构的四种基本关系并画出它们的关系图。
欢迎下载
-
答案: ( 1)集合结构 数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是 否为班级成员,只需将班级看做一个集合结构。 ( 2)线性结构 数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺 序进行排列,将组成一个线性结构。 ( 3)树结构 数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每 位组长管理多名组员,从而构成树形结构。 ( 4)图结构或网状结构 数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可 以是朋友,从而构成图形结构或网状结构。 其中树结构和图结构都属于非线性结构。
( 4) i=1; while(i<=n)
i=i*3; 答案: O(log 3n) 解释:语句 i=i*3;
的执行次数为
log 3n 。
( 5) x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++)
x++; 答案: O(n 2)
解释:语句 x++; 的执行次数为 n-1+n-2+ ……+ 1= n(n-1)/2 。
C.计算机的配置
D. A 和 B
答案: D
解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些
排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏
以及平均时间复杂度的评价。
( 6)以下数据结构中, ( )是非线性数据结构
A.树
B
.字符串
数据结构 第一章 绪论
2014-4-1
21
... 2000 2002 2004 2006 2008 2010 2012 2014 2016 05 01 03 08 02 07 04 06 ... 6200 6202 6020 4000 4002 4800 4802 4804
... 08 03 ... 05 01 02 ... 06 ... 07 04 ... 4802 4002 6200 0 4804 4000
… … … … … …
计算机科学与技术 应用数学 信息管理与信息系统 英语 …
大学语文 数据结构 管理信息系统 高等数学 …
08 计算机一班 08 数学三班 09 信管一班 09 外语八班 …
1 2 3 4 …
2014-4-1
8
例1-2 人-机对弈
国际象棋、井字棋、五子棋、中国象棋和围棋 …。 把计算机操作的对象对弈过程中可能出现的棋盘状 态称为格局。 格局之间的关系是由不同的棋类对弈规则决定,这 个关系往往是一种层次结构:从一个格局可以派生 出若干个新的格局,而从一个新格局又可以派生出 多个更新的格局,将对弈开始到结束整个对弈过程 可能派生的所有格局表示出来,就象一棵倒挂的 “树”。以这些对弈游戏中的井字棋为例,其“树 根”就是对弈开始之前的棋盘格局,而所有的“叶 子”就是可能出现的结局,对弈过程就是从树根沿 树叉到每个叶子的过程。如图所示:
2014-4-1
11
350
体育馆 N
H
300 300
G
150
北二区大门
信息楼 国际文化大 厦
文科大楼
E
300
200
F
外语楼
北一区大门
1500
北门
900
数据结构第一章--绪论(严蔚敏版)
解 T = (D, R ) D={A,B,a,b,c }
R是D上的关系的集合 是 上的关系的集合
A
B
a R={ P1,P2 } P1 ={<A,a>, <A,b>, <A,c>} P2 ={<B,a>, <B,b>, <B,c>}
b
c
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数可以表示为 a+bi 一个复数可以表示为 复数 C={a,b}
也可以表示成一个有序对 <a, b>
∴这里存在一种关系 P ={<a,b>} (只有一个有序对 只有一个有序对) 只有一个有序对
而R是C上的关系的集合 R={ P } 是 上的关系的集合
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数的数据结构为 Complex= (C , R) 其中, 其中, C={a,b} R={ P } P ={<a,b>}
a b c
解 其数据结构可描述为 d e T = (D, R ) D是数据元素的集合 D={a,b,c,d,e} 是数据元素的集合
R是D上的关系的集合 R={ P } 是 上的关系的集合
P ={<a,b>,<a,c>,<b,d>,<b,e>}
例2
一小组有a,b,c 三个学生,一个导师A 一小组有a,b,c 三个学生,一个导师A 和一个辅导员B 和一个辅导员B,此小组的数据结构如图:
48
ADT 抽象数据类型名 { 数据对象: 数据对象:〈数据对象的定义〉 数据关系: 数据关系:〈数据关系的定义〉 基本操作: 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名 其中基本操作的定义格式为: 基本操作名(参数表) 基本操作名 初始条件:〈初始条件描述〉 初始条件: 操作结果:〈操作结果描述〉 操作结果
数据结构第一章绪论(1)PPT教学课件
2020/12/10
7
二、 数据结构( Data Structure )
★ 数据结构是相互之间存在一种或多种特定关系的 数据元素的集合
◆ 数据结构=数据+结构(关系)
2020/12/10
8
数据结构的描述方式
1、逻辑结构
★ 是对数据元素之间逻辑关系(抛开具体的关系 含义以及存储方式等)的描述
◆ 它可以用一个数据元素的集合和定义在此集合 上的几个关系来表示
第一章 绪论
第一节 什么是数据结构 ★ 数据结构(Data Structure)
2020/12/10
1
什么是数据结构
★ 数据结构作为一门独立的课程在国外是从1968年 才开始设立的
◆ 当时,数据结构几乎和图论,特别是和表、树的 理论成为同义语
2020/12/10
2
什么是数据结构
◆ 但对于数据结构的概念,至今尚未有一个被一致 公认的定义
2020/12/10
9
★ 数据结构通常可用图形表示 圆圈表示数据元素,箭头表示关系
数据元素
数据元素
Ei
关系
E i+1
数据结构的描述方式
2、物理结构(存储结构)
★ 数据结构在计算机中的具体表示(representation) 和实现 (implementation)
2020/12/10
11
数据结构的分类 1、按逻辑结构分类 ★ 集合、线性结构、树型结构、图状结构 2、按物理结构分类 ★ 顺序存储结构、链式存储结构、索引存储结构
2020/12/10
12
数据结构的概念
★ 数据结构的形式定义为
◆ 数据结构是一个二元组 Data_Structure=(D,S)
数据结构绪论 ppt课件
1.4 算法和算法分析
2019年3月2日星期六
算法和程序的主要区别:程序是用某种程序设计语言所书 写的一个计算过程。而算法并不一定表现为一个计算机程 序。它可以用不同方式和不同语言来描述。
BEGIN
1t 算法 2i DO UNTIL i>5 t×i t i+1i ENDDO PRINT t
作为描述工具。其描述语法见P10-11。
但上机时要用具体语言实现,如C或C++等
ppt课件 25 25
1.4 算法和算法分析
2019年3月2日星期六
Q1. 什么是算法?
Q2. 算法设计的要求?
Q3. 时间复杂度如何表示?
Q4. 空间复杂度如何表示?
ppt课件 26
26
1.4 算法和算法分析
2019年3月2日星期六
2019年3月2日星期六
【例1】数据管理问题—线性问题
ppt课件 8
8
1.1 什么是数据结构
2019年3月2日星期六
【例2】棋类对弈问题—树型结构
初始棋盘格局
第一步
x
x
x x
第二步
x0
x 0
x
0
x 0
第 N 步
x x x 0x 0x 0 x 0
ppt课件 9
x 0x x0
x 0x x 0
9
1.1 什么是数据结构
ppt课件 30
30
1.4 算法和算法分析
2019年3月2日星期六
3 算法分析
Q3. 时间复杂度如何表示?
• 算法分析方法
• 算法分析的两个主要方面
时间复杂度:算法对时间的需求。 T(n)=O(f(n))
数据结构课件 第一章 绪论
存储地址 存储内容
Lo 元素1 元素2 ……..
Lo+m
顺序存储
Lo+(i-1)*m
元素i
…….. Lo+(n-1)*m
元素n
Loc(元素i)=Lo+(i-1)*m
h
1345
链式存储
元素2 1536 元素3 1346 元素4
h
元素1 1400
∧
存储地址 1345 1346 …….
存储内容 元素1 元素4 ……..
非数值计算的程序设计问题:
例1 书目自动检索系统
线性表 算法:需要检索的书目?如何检索?用户 界面? 模型:? 书目文件
书目卡片 001 高等数学 樊映川 002 理论力学 罗远祥 登录号: 003 高等数学 华罗庚 004 书名: 线性代数 栾汝书 …… 作者名: …… ……
S01 L01 S01 S02 ……
数据对象 (data
集合,是数据的一个子集。如大写字母字符数据对象 是集合C={‘A’,’B’,’C’,……,’Z’} ,整数数据对象是 集合 N = { 0, ±1, ±2, … }
数据结构 (data
structure) : 带结构的数据元
素的集合,也就是指互相之间存在着一种或 多种关系的数据元素的集合。数据元素之间 的关系称为结构。
本课程讲述的主要内容:
分别讲述数据结构的基本概念、线性表、 栈和队列、串、数组和广义表、树和二叉 树、图、查找、排序等内容。 学习本课程的基本方法: 上课认真听讲; 仔细阅读教材中的大量例题,从而体会 并最终掌握数据结构中的基本概念;
第一章 绪论
1.1 什么是数据结构
1.2 基本概念和术语 1.3 抽象数据类型
数据结构(第3版)习题答案
B. O(1)
( 6)表达式 a*(b+c)-d 的后缀表达式是(
C. O( n2) B )。
D . O(n3)
A .abcd *+-
B. abc+* d-
C. abc*+ d-
( 7)队列是一种特殊的线性表,其特殊性在于(
C )。
D . - +* abcd
A .插入和删除在表的不同位置执行 C.插入和删除分别在表的两端执行 ( 8)栈是一种特殊的线性表,具有(
(1) 5+6*7
(2) (5-6)/7
(3) 5-6*7*8
(4) 5*7-8
(5) 5*(7-6)+8/9
(6) 7*(5-6*8)-9 【答】:
(7) 5+6*7 (8) (5-6)/7 (9) 5-6*7*8 (10)5*7-8
后缀表达式: 5 6 7*+ 后缀表达式: 5 6-7/ 后缀表达式: 5 6 7*8*后缀表达式: 5 7* 8-
datatype data[N]; int length;
/* 此处假设数据元素只包含一个整型的关键字域
*/
/* 线性表长度 */
} seqlist;
/* 预定义的顺序表类型 */
算法 countx ( L,x )用于求顺序表 L 中值为 x 的结点的个数。
int countx(seqlist *L,datatype x)
{ int c=0;
int i;
for (i=0;i<L->length;i++)
if (L->data[i]==x) c++;
return c;
1.2基本概念与术语
T
G1
G2
G3
S11 S12 S21 S22 S31 S32
1.2 基本概念和术语
五、数据的物理结构和逻辑 结构 1、物理结构:数据结构中数 据元素间的关系在存储器中 的存储方法(表现和实现)。
1.2 基本概念和术语
2、逻辑结构:数据结构描述的元素间的逻辑 “关系”,独立于计算机。 数据元素间的关系表示:
a 1 a 2 a 3
1.2 基本概念和术语
链式映象:x和y的存储位置随意,则需要用 一
个和x在一起的附加信息指示y的存储位置, 这
个附加信息和x绑定在一起,此时,两者合在 一
起作为x的存储映y 象。 x
1.2 基本概念和术语
数据的逻辑结构和物理结构的关系: • 逻辑结构只抽象地描述数据元素逻
辑关 系(简称数据结构)——算法的设 计 • 物理结构是一个逻辑结构映像到计 算机
C1 C2
1.2 基本概念和术语
例1-5:学科研究课题小 组
Group=(P, R) 其中:P={T, G1, G2, … Gn, S11, S12, … Snm} R={R1, R2} R1={<T, Gi> | i=1, 2, 3} R2={<Gi, Sij> | i=1, 2, 3,
j=1, 2}
其中: 1)数据对象和数据关系的定义用伪码表
1.2 基本概念和术语
伪码(Pseudocode):算法描述语言。 • 使用伪码的目的是为了使被描述的算
法可以容易以任何一种编程语言实现。
• 因此,伪码必须结构清晰,代码简单, 可读性强,并且类似自然语言。
1.2 基本概念和术语
2)基本操作的定义: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结果:<操作结果描述> 基本操作有两种参数: 赋值参数:为操作提供输入值 引用参数:以&打头,除提供输
第1章 绪论 数据结构课件
L S ……
书目文件
索引表
按分类号
002,… 001,003, ……
国际教育学院
人机对奕问题
树
Байду номын сангаас……..
……..
…...
…...
…...
国际…教.育.. 学院
文件系统的系统结构图
树
/ (root)
bin
lib
user
etc
math ds sw
yin tao xie
Queue.cpp Stack.cpp Tree.cpp
国际教育学院
学生选课问题
“课程”表格
课程编号 024002 024010 024016 024020 024021 024024 024026
课程名 程序设计基础 汇编语言 计算机原理 数据结构 微机技术 操作系统 数据库原理
学时 64 48 64 64 64 48 48
国际教育学院
学生选课问题
数据结构
•Office: 东五楼408(西) •Tel:13592501918 •E_mail:zhiguowang@
王治国
国际教育学院
为什么要学习数据结构
❖编程基础 ❖计算机及相关专业考研课程 ❖计算机等级考试课程 ❖程序员考试课程
国际教育学院
课程学习指导
课程特点:内容抽象、概念性强、内容灵活、不易掌握
程序=算法+数据结构
电子计算机的主要用途:
早期:
主要用于数值计算。
后来:
处理逐渐扩大到非数值计算领域,能处理多种 复杂的具有一定结构关系的数据
国际教育学院
书目自动检索系统
线性表
按书名
001
中南大学数据结构与算法_第1章绪论课后作业答案
第一章绪论习题练习答案1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
● 数据:指能够被计算机识别、存储和加工处理的信息载体。
● 数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。
数据元素有时可以由若干数据项组成。
● 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
通常数据类型可以看作是程序设计语言中已实现的数据结构。
● 数据结构:指的是数据之间的相互关系,即数据的组织形式。
一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。
● 逻辑结构:指数据元素之间的逻辑关系。
● 存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构.● 线性结构:数据逻辑结构中的一类。
它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都有且只有一个直接前趋和一个直接后继。
线性表就是一个典型的线性结构。
栈、队列、串等都是线性结构。
● 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。
数组、广义表、树和图等数据结构都是非线性结构。
1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。
答:例如有一张学生体检情况登记表,记录了一个班的学生的身高、体重等各项体检信息。
这张登记表中,每个学生的各项体检信息排在一行上。
这个表就是一个数据结构。
每个记录(有姓名,学号,身高和体重等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。
这几个关系就确定了这个表的逻辑结构是线性结构。
这个表中的数据如何存储到计算机里,并且如何表示数据元素之间的关系呢? 即用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:抽象数据类型三元组的定义: ADT Triplet{ 数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet} 数据关系:R1={<e1,e2>,<e2,e3>} 基本操作: InitTriplet(&T,v1,v2,v3)
操作结果:构造了三元组T,元素e1,e2,e3分别被赋以参数v1,v2,v3的值
(2)数据结构的表示用类型定义(typedf)描述。数据元素类型 约定为ElemType,由用户在使用该数据类型时自行定义
(3)基本操作的算法都用以下形式的函数描述 函数类型 函数名(函数参数表){ //算法说明 语句序列 }//函数名 除了函数的参数需要说明类型外,算法中使用的辅助变量 可以不做变量说明,必要时对其作用给予注释。一般: a、b、c、d、e等用作数据元素名; i、j、k、l、m、n等用作整形变量名; p、q、r等用作指针变量名。 当函数返回值为函数结果状态代码时,函数定义为Status 类型。参数两种:赋值参数和引用参数(以&打头)
(8)输入和输出语句有 输入语句 scanf(变量1,…,变量n); 输出语句 printf(表达式1,…,表达式n);
(9)注释 单行注释
//文字序列
(10)基本函数有 求最大值 求最小值 求绝对值 求不足整数值 求进位整数值 判定文件结束 判定行结束
max(表达式1,…,表达式n) min(表达式1,…,表达式n) abs(表达式) floor(表达式) ceil(表达式) eof(文件变量) 或eof eoln(文件变量)或 eoln
(6)循环语句有 for语句 for(赋初值表达式序列;条件;修改表达式序列)语句; while语句 while(条件)语句; do-while 语句 do { 语句序列; }while(条件); (7)结束语句有 函数结束语句 return 表达式; ruturn; case结束语句 break; 异常结束语句 exit(异常代码)
3. 数据对象(data object)
是性质相同的数据元素组成的集合,是数据的一个子集。 例如,整数数据对象的集合可表示为N={0,±1, ±2…….},字母字符数据对象的集合可表示为 C={‘A’,’B’,…’Z’}。 4 .数据结构(data structure) 是指相互之间存在一种或多种特定关系的数据元素所组 成的集合。具体来说,数据结构包含三个方面的内容, 即数据的逻辑结构,数据的存贮结构和对数据所施加的 运算。数据之间的相互关系称为逻辑结构 数据结构在计算机中的表示称为数据的物理结构,又称 为存储结构。这三个方面的关系为:
DestroyTriplet(&T)
操作结果:三元组T被销毁
Get(T,i,&e)
初始条件:三元组T已存在,1≤i≤3 操作结果:用e返回T的第i元的值 ……
}ADT Triplet
1.3抽象数据类型的表示与实现
抽象数据类型可通过固有数据类型来表示和实现,即:利用 处理器中已存在的数据类型来说明新的结构,用已经实现的 操作来组合新的操作。对教材采用的类C说明: (1)预定义常量和类型: //函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //Status 是函数的类型,其值是函数结果状态代码 typedef int Status
Status Get(T,i,&e)
初始条件:三元组T已存在,1≤i≤3 操作结果:用e返回T的第i元的值 ……
//-----------基本操作的实现-----------Status InitTriplet(Triplet &T,ElemType v1, ElemType v2, ElemType v3){
例1、人员信息管理问题(线性数据结构)
学号 01 02 03 04 05 06 07 08 姓名 张三 李四 王五 赵六 钱七 刘八 朱九 孙十 性别 男 男 女 男 女 女 男 女 籍贯 长沙 北京 广州 上海 南京 武汉 昆明 杭州 电 话 8639000 23456789 30472589 41237568 5013472 61543726 4089651 6154372 通 讯 地 址 麓山南路 327 号 学院路 435 号 天河路 478 号 南京路 1563 号 南京大学 武汉大学 云南大学 西湖路 635 号
数据类型(data type)
是一组性质相同的值的集合以及定义于这个值集合上的一组操作 的总称。
例如,高级语言中用到的整数数据类型,是指由-32768到32767 中值构成的集合及一组操作(加、减、乘、除、乘方等)的总称。 抽象数据类型(ADT) 指一个数学模型以及定义在该模型上的一组操作。抽象数据类型 的定义仅取决于它的一组逻辑特性,与其在计算机内部如何表示 和实现无关。 一个抽象数据类型的软件模块通常包含定义、表示和实现三部分 抽象数据类型可用以下三元组表示: (D,S,P) D是数据对象,S是D上的关系集,P是D上的基本操作集。 本书用以下格式定义抽象数据类型:
数据结构在计算机中有两种不同的表示方法:
顺序表示和非顺序表示 由此得出两种不同的存储结构: 顺序存储结构和链式存储结构 顺序存储结构:用数据元素在存储器中的相对位置来表示 数据元素之间的逻辑关系。 链式存储结构:在每一个数据元素中增加一个存放地址 的指针(Pointer ),用此指针来表示数据元素之间的逻 辑关系。 我们可以用数据类型来描述存储结构
(5)选择语句有 条件语句1 if(表达式)语句; 条件语句2 if(表达式)语句; else 语句;
开关语句1 switch(表达式){ case 值1:语句序列1;break; …… case 值n:语句序列n;break; default:语句序列n+1; } 开关语句2 switch { case 条件1:语句序列1;break; …… case 条件n:语句序列n;break; default:语句序列n+1; }
例:设有一个线性表(a1,a2,a3,a4,a5),它的抽象描述可表示为 D=(K,R),其中K={a1,a2,a3,a4,a5},R={<a1,a2>,<a2,a3>,<a3,a4>,<a4,a5>}, 则它的逻辑结构用图描述见图。
a1
a2
a3
a4
a5
线性表的逻辑结构描述
例 : 设 一 个 数 据 结 构 的 抽 象 描 述 为 D=(K,R), 其 中 K={a,b,c,d,e,f,g,h},r={<a,b>,<a,c>,<a,d>,<b,e>,<c,f>,<c,g>, <d,h>},则它的逻辑结构用图描述见图。
第1章 绪论
“数据结构”形成和发展的背景:
1.1什么是数据结构
1、用计算机解决问题的步骤: 从具体问题抽象出一个适当的数学模型 设计一个解此数学模型的算法 编程序 调试程序直至成功
例如,求解梁架结构中应力的数学模型的线性方程组,该方程组可以 使用迭代算法来求解。预报人口增长情况的数学模型为微分方程。 然而更多的分数只计算问题无法用数学方程加以描述解决这类问 题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构, 才能有效地解决问题。下面所列举的就是属于这一类的具体问题
图 1-1
学生数据表
例2、人机对弈问题(树型数据结构)
例3、多叉路口交通灯的管理问题(图型数据结构)
C
DB BAADAC NhomakorabeaAB
ED EC EB
BC
E
A
BD DA DB DC EA
例4:汉诺塔问题:(栈结构) A B
C
以上例子都是非数值计算问题,描述它们的数学模型不再 是数学方程,而是表、树、图、栈等数据结构,因此 简单说来:
(11)逻辑运算约定 与运算&&:对于A&&B,当A的值为0时,不再对B求值 或运算||:对于A||B,当A的值为非0时,不再对B求值
例:抽象数据类型Triplet的表示和实现
//-------------采用动态分配的顺序存储结构-------------typedef ElemType *Triplet; //ElemType类型的指针定义为Triplet类型 //--------------基本操作的函数原型说明-----------------
Status InitTriplet(Triplet &T,ElemType v1, ElemType v2, ElemType v3)
操作结果:构造了三元组T,元素e1,e2,e3分别被赋以参数v1,v2,v3的值
Status
DestroyTriplet(Triplet &T)
操作结果:三元组T被销毁
ADT 抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> }ADT抽象数据类型名 其中数据对象和数据关系的定义用伪码描述,基本操作的 定义格式为: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结果:<操作结果描述> 基本操作有两种参数:赋值参数值为操作提供输入值;引用参 数以&打头,除了可以提供输入值,还将返回操作结果。 “初始条件”描述操作执行前数据结构和参数应满足的条件,若不 满足,则操作失败,并返回相应出错信息。若为空则省略 “操作结果”说明了操作正常完成后,数据结构的变化和应返回的 结果。
(4)赋值语句有 简单赋值:变量名=表达式; 串联赋值:变量名1=变量名2=……=变量名k=表达式; 成组赋值: (变量名1,…,变量名k)=(表达式1,…,表达式k); 结构名=结构名; 结构名=(值1,值2,…,值k); 变量名[]=表达式; 变量名[起始下标..终止下标]=变量名[起始下标..终止下标]; 变换赋值:变量名 变量名; 条件赋值:条件表达式?表达式T : 表达式F;