数据结构第一章

合集下载

精品课件-数据结构教程(胡元义)-第1章

精品课件-数据结构教程(胡元义)-第1章
(4) 哈希(或散列)存储结构:此方法的基本思想是根据 数据元素的关键字通过哈希(或散列)函数直接计算出该数据元 素的存储地址。
第1章 绪论
顺序存储结构的主要优点是节省存储空间,即分配给数据 的存储单元全部用于存放数据元素的数据信息,数据元素之间 的逻辑关系没有占用额外的存储空间。采用这种存储结构可以 实现对数据元素的随机存取,即每个数据元素对应有一个序号, 并由该序号可以直接计算出数据元素的存储地址(例如对于数 组A其序号为数组元素的下标,数组元素A[i]可以通过*(A+i) 进行存取)。但顺序存储结构的主要缺点是不便于修改,对数 据元素进行插入、删除运算时,可能要移动一系列的数据元素。
第1章 绪论
(1) 分析阶段:分析实际问题,从中抽象出一个数学模 型。
(2) 设计阶段:设计出解决数学模型的算法。 (3) 编程阶段:用适当的编程语言编写出可执行的程序。 (4) 测试阶段:测试、修改直到得到问题的解答。 数据结构课程集中讨论软件开发过程中的设计阶段,同时 涉及分析阶段和编程阶段的若干基本问题。此外,为了构造出 好的数据结构及其实现,还需考虑数据结构及其实现的评价与 选择。因此,数据结构课程的内容包括了如表1.1所示的数据 表示和数据处理方面所对应的3个层次。
第1章 绪论
1.2.2 存储结构 数据的存储结构是数据结构在计算机中的表示方法,也即
数据的逻辑结构到计算机存储器的映像,包括数据结构中数据 元素的表示以及数据元素之间关系的表示。数据元素及数据元 素之间的关系在计算机中可以有以下四种基本存储结构:
(1) 顺序存储结构:借助于数据元素在存储器中的相对 位置来表示数据元素之间的逻辑关系。通常顺序存储结构是利 用程序语言中的数组来描述的。
第1章 绪论

数据结构第一章课后习题与答案

数据结构第一章课后习题与答案

第 1 章 绪 论(2005-07-14) -第 1 章 绪 论课后习题讲解1. 填空⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

【解答】数据元素⑵( )是数据的最小单位,( )是讨论数据结构时涉及的最小数据单位。

【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。

⑶ 从逻辑关系上讲,数据结构主要分为( )、( )、( )和( )。

【解答】集合,线性结构,树结构,图结构⑷ 数据的存储结构主要有( )和( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )和()。

【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸ 算法具有五个特性,分别是( )、( )、( )、( )、( )。

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹ 算法的描述方法通常有( )、( )、( )和( )四种,其中,( )被称为算法语言。

【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺ 在一般情况下,一个算法的时间复杂度是( )的函数。

【解答】问题规模⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为( ),若为n*log25n,则表示成数量级的形式为( )。

【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。

2. 选择题⑴ 顺序存储结构中数据元素之间的逻辑关系是由( )表示的,链接存储结构中的数据元素之间的逻辑关系是由( )表示的。

A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。

数据结构第01章概论.ppt

数据结构第01章概论.ppt
高等学校精品课程
(第2版)
李云清 杨庆红 揭安全
人民邮电出版社
1
第一章 概述
什么是数据结构 数据类型和抽象数据类型
算法和算法分析
退出
第一章 概述
瑞士著名的计算机科学家Nicklaus Wirth在1976 年出版了一本书,书名为《算法+数据结构 = 程序设 计》,它正说明了数据结构在程序设计中的作用。程序 设计的实质即为计算机处理问题编制一组"指令",首先 需要解决两个问题:即算法和数据结构。算法即处理问 题的策略,而数据结构即为问题的数学模型。
退出
1.1.4数据的运算集合
对于一批数据,数据的运算是定义在数据的逻 辑结构之上的,而运算的具体实现就依赖于数据的 存储结构。
数据的运算集合要视情况而定,一般而言,数据的 运算包括插入、删除、检索、输出、排序等。
插入:在一个结构中增加一个新的结点。
删除:在一个结构删除一个结点。
检索:在一个结构中查找满足条件的结点。
98
I 79
F
(a)城市距离图
A
34
12
B
H9
8
C
G
31
21
E 10
D
I 79
F
(b)联通各城市最小生成树
退出
以上所举例子中的数学模型正是数据结构要讨论 的问题。因此,简单地说,数据结构是一门讨论"描述 现实世界实体的数学模型(非数值计算)及其上的操作 在计算机中如何表示和实现"的学科。
退出
综上所述
对于一个数据结构B=(K,R),必须建立从结点 集合到计算机某个存储区域M的一个映象,这个映象 要直接或间接地表达结点之间的关系R。数据在计算 机中的存储方式称为数据的存储结构。

数据结构(C语言版)第1章 绪论

数据结构(C语言版)第1章  绪论
数据结构(Data Structures) 数据结构
(C语言版 语言版) 语言版
主讲教师: 吴让仲 主讲教师:
Instructor: WU, RANGZHONG E-mail: wurangzhong@
1/68
教材 (Text Book) 数据结构(C语言版 数据结构 语言版) 语言版
17/68
逻辑结构的分类
数据的逻辑结构是本质,可以分为: 数据的逻辑结构是本质,可以分为: 线性结构和 线性结构和非线性结构 也可以分为 集合 结构中的数据元素除了同属于一种类型外,别无 结构中的数据元素除了同属于一种类型外, 其它关系. 其它关系. 线性结构 结构中的数据元素之间存在一对一的关系. 结构中的数据元素之间存在一对一的关系. 树型结构 结构中的数据元素之间存在一对多的关系. 结构中的数据元素之间存在一对多的关系. 图状结构或网状结构 结构中的数据元素之间存在多对 多的关系. 多的关系.
数据结构发展简史
作为独立课程国外1968年开始设立. 作为独立课程国外1968年开始设立. 1968年开始设立 1968年美国KNUTH教授开创了数据结构的最初 1968年美国KNUTH教授开创了数据结构的最初 年美国KNUTH 体系. 体系. 计算机专业的专业基础课. 计算机专业的专业基础课. 非计算机专业的主要选修课. 非计算机专业的主要选修课.
25/68
数据结构课程的内容
数据结构是介于数学,计算机硬件和计算机软 数据结构是介于数学,计算机硬件和 数学 件之间的一门计算机科学与技术专业的核心课 是编译原理,操作系统,数据库, 程,是编译原理,操作系统,数据库,人工智 能等课程的基础.同时,数据结构技术也广泛 能等课程的基础.同时, 应用于信息科学,系统工程, 应用于信息科学,系统工程,应用数学以及各 信息科学 种工程技术领域. 种工程技术领域. 数据结构课程的先修课程有高级语言程序设计 和离散数学. 和离散数学

《数据结构》(C语言版) 第一章 绪论 习题及答案

《数据结构》(C语言版) 第一章 绪论 习题及答案

一、单选题1、______ 是数据的最小单位。

A、数据项B、表元素C、信息项D、数据元素2、以下说法不正确的是______。

A、数据可由若干个数据元素构成B、数据项可由若干个数据元素构成C、数据项是不可分割的最小标识单位D、数据元素是数据的基本单位3、数据结构是指 ______ 的集合以及它们之间的关系。

A、数据B、结构C、数据元素D、计算方法4、计算机所处理的数据一般具备某种内在联系,这是指 ______。

A、数据和数据之间存在某种关系B、元素和元素之间存在某种关系C、元素内部具有某种结构D、数据项和数据项之间存在某种关系5、在数据结构中,与所使用的计算机无关的是数据的 ______ 结构。

A、逻辑B、存储C、逻辑和存储D、物理6、数据的逻辑结构可以分为 ______ 两类。

A、紧凑结构和非紧凑结构B、动态结构和静态结构C、线性结构和非线性结构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、数据的逻辑结构B、数据结构C、数据元素之间的关系D、数据的存储结构13、在数据的存储中,一个节点通常存储一个 ______。

A、数据结构B、数据元素C、数据项D、数据类型14、在决定选取任何类型的存储结构时,一般不多考虑 ______。

A、各节点的值如何B、节点个数的多少C、对数据有哪些运算D、所用编程语言实现这种结构是否方便15、数据在计算机的存储器中表示时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称之为 ______。

数据结构第一章

数据结构第一章

1.3 算法的描述
(2) 空间效率 一个算法在执行过程中所占用的存储空间大小,称为空间效率或空 间复杂度。与时间复杂度类似,空间复杂度是指算法在计算机内执行 时临时占用的存储空间大小。算法的空间复杂度一般以数量级形式给 出。 提高算法空间复杂度的措施有原地工作和压缩存储。
1.3 .4算法的描述语言
1.3 算法的描述
例1.6 求下列4个程序段的语句频度 (a) i++; x=0; (b)for(i=1;i<=n;i++) x=x+1;
(c)for(i=1;i<=n;i++) for (j=1;j<=n;j++) x=x+1;
(d)for(i=1;i<=n;i++) for (j=1;j<=n;j++) for (k=1;k<=n;k++) x=x+1;
记录号 学号 980001 980002 姓名 吴承志 李淑芳 性别 男 女 专 业 计算机科学与技术 信息与计算科学 年级 98级 2001级 98级 9,10 1,2 2000级 6,7,8
1 2 3 4 5
990301
990302
刘 丽
张会友


数学与应用数学
信息与计算科学
99级
99级
98级
99级
数学与应用数学
2000级 2001级
2001级
姓名索引表
9
10
学生信息表
教学计划编排问题 案例2
问题: 如何通过计算机编排教学计划? 算法分析: 一个教学计划包含许多课程,在教学计划包含的许多课程之间,有些必须按规 定的先后次序进行,有些则没有次序要求。即有些课程之间有先修和后续 的关系,有些课程可以任意安排次序。这种各个课程之间的次序关系可用 一个称作图的数据结构来表示

数据结构第一章--绪论(严蔚敏版)


解 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 抽象数据类型名 其中基本操作的定义格式为: 基本操作名(参数表) 基本操作名 初始条件:〈初始条件描述〉 初始条件: 操作结果:〈操作结果描述〉 操作结果

数据结构(C语言版) 第1章 绪论

数据结构
理论课教材: 数据结构(C语言版) 严蔚敏 吴伟民 编著
第一章 绪论
1.0 1.1 1.2 1.3 1.4 学习数据结构的主要意义和要求 数据结构讨论的范畴 基本概念 抽象数据类型的表示和实现 算法和算法的度量
学习数据结构的主要意义和要求
意义:

数据结构和算法是计算机学科的两大支柱 数据结构是程序设计的基础 程序=算法+数据结构
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 数据的逻辑结构与存储结构密切相关 逻辑结构
线性表
物理结构
顺序存储结构


链式存储结构
复合存储结构
h
h
元素1 1400
1345 元素2
链式存储
数据结构的形式定义为: 数据结构是一个二元组 Data_Structures = (D, S) 其中: D 是数据元素的有限集, S 是 D上关系的有限集。
数据元素的映象方法: 例用二进制位(bit)的位串表示数据元素
(321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
算法设计的要求
2. 可读性 算法主要是为了人的阅读与交流,其次才是为计算机执行,因此算法 应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以 调试。 3.健壮性 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而
1536
元素3
1346
元素4

存储地址 1345 1346
存储内容 元素1 元素4
指针 1400 ∧

数据结构课程1


-------------------
-------
-------
-------
-------
-------
这张表中的元素存在一个顺序关系,即谁在谁前,谁在谁 后的信息(即病人诊断顺序依次为张立,田方,……) 。 所以,可以用线性结构来刻画这种关系。。
例1-3 大学系级行政机构
大学系级行政机构,如图1.1所示:
数据结构的含义
因此可以认为,数据结构是介于数学、计算机硬件和计 算机软件三者之间的一门核心课程(如图1.1所示)。
数学
代数系统
编码理论 数据类型 算子关系
数据表示法
数据的操作 文件系统
存储装置
数据结构
硬件
数据存取
( 计 算 机 系机器组织
统设计)
数据组织
信息检索
软件
(计算机程 序设计)
图1.1 “数据结构”所处的地位
3. 数据的操作
一般而言,必须对数据进行加工处理,才能得到问题的 解。在非数值性问题中,对数据的操作(或运算)已不限 于对数据进行加、减、乘、除等数学运算。数据的操作是 定义在逻辑结构上的,而操作的具体实现是在存储结构上 进行的。基本的数据操作主要有以下几种:
(1)查找:在数据结构中寻找满足某个特定条件的数据元 素的位置或值。
现实问
数学模
算法
程序



图1.8 计算机求解问题的流程
即首先要从现实问题出发,抽象出一个适当的数学模型,
然后设计一个求解此数学模型的算法,最后根据这个算法 编出程序,经过测试、排错、运行直至得到最终的解答。 (现实)问题、数学模型、算法和程序是问题求解过程中 出现的四个不同的概念。

C++数据结构 第1章 栈(C++版)


case '-':number[p]-=number[p + 1];break; case '*':number[p]*=number[p + 1];break; case '/':number[p]/=number[p + 1];break; } } bool can() //判断运算符的优先级别,建立标志函数 { if ((s[i]=='+'||s[i]=='-')&&symbol[p]!='(') return 1; if ((s[i]=='*'||s[i]=='/')&&(symbol[p]=='*'||symbol[p]=='/'))return 1; return 0; } main() { printf("String :");gets(s); s[strlen(s)]=')';symbol[p]='('; while (i<strlen(s))
main() { ("input a string(@_over):"); gets(s); printf("result=%d",comp(s)); system("pause"); return 0; }
栈的用途极为广泛,在源程序编译中表达式的计算、过程的嵌套调用和递 归调用等都要用到栈,下面以表达式计算为例子加以说明。 源程序编译中,若要把一个含有表达式的赋值语句翻译成正确求值的机器 语言,首先应正确地解释表达式。例如,对赋值语句 X=4+8×2-3; (式 11.1) 其正确的计算结果应该是17,但若在编译程序中简单地按自左向右扫描 的原则进行计算,则为:X=12×2-3=24-3=21 这结果显然是错误的。因此,为了使编译程序能够正确地求值,必须事先 规定求值的顺序和规则。通常采用运算符优先数法。 一般表达式中会遇到操作数、运算符和语句结束符等,以算术运算符为例, 对每种运算赋予一个优先数,如: 运算符:× ÷ + - 优先数:2 2 1 1 (语句结束符“;”的优先数为零) 在运算过程中,优先数高的运算符应先进行运算(但遇到括号时,应另作 处理)。按这样的规定,对式(11.1)自左向右进行运算时,其计算顺序就被 唯一地确定下来了。计算顺序确定后,在对表达式进行编译时,一般设立两个 栈,一个称为运算符栈(OPS),另一个称为操作数栈(OVS),以便分别存 放表达式中的运算符和操作数。编译程序自左向右扫描表达式直至语句结束, 其处理原则是: ①凡遇到操作数,一律进入操作数栈; ②当遇到运算符时,则将运算符的优先数与运算符栈中的栈顶元素的优先
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主讲:傅晓丹 E-mail:fxd106@
第1章 概 论
1
课程要求
➢ 学会分析数据对象的特征,选择适当的 数据结构及相应处理算法求解问题;
➢ 了解掌握各种数据类型及基本操作的算 法实现;
➢ 掌握一般算法的复杂度分析。
第1章 概 论
2
实验安排
➢ 本课程采用讲授与实验相结合,用上机 课的课内时间,通过上机,完成一项课 程设计,并撰写实验报告。目的在于让 大家了解数据类型的内在含义。
第1章 概 论
50
for (i=2;i<=n;++i)
for(j=2;j<=i-1;++j)
{ ++x; a[i][j]=x;} 语句++x的执行次数关于n的增长率为n² 它是语句频度表达式(n-1)(n-2)/2中增 长最快的项。 附:Sn=(a1+an)n/2
第1章 概 论
41
main() {
int a=2; int &b=a; printf("a=%d,b=%d\n",a,b); /*输出:a=2,b=2*/ b++; printf("a=%d,b=%d\n",a,b); /*输出:a=3,b=3*/ a++; printf("a=%d,b=%d\n",a,b); /*输出:a=4,b=4*/ }
} StudType;
第1章 概 论
15
链表首结点地址head
学生表构成的链 表如右图所示。其 中的head为第一个 数据元素的指针。
1 张斌 男 9901 8 刘丽 女 9902 34 李英 女 9901 20 陈华 男 9902 12 王奇 男 9901 26 董强 男 9902 5 王萍 女 9901 ∧
学生表构成的链表
第1章 概 论
16
1.1.2 逻辑结构的类型
➢ 集合结构:结构中的数据元素之间除了 “同属于一个集合”的关系外,别无其 他关系;
➢ 线性结构:结构中的数据元素之间存在 一个对一个的关系;
第1章 概 论
17
➢ 树形结构:结构中的数据元素之间存在 一个对多个的关系;
➢ 图状结构或网状结构:结构中的数据元 素之间存在多个对多个的关系。
➢ 存储结点信息的同时,还建立附加的索 引表
➢ 索引表的每一项称为索引项,形式: (关键字,地址)
➢ 关键字:结点的惟一标识 ➢ 地址:指向结点的指针
第1章 概 论
27
哈希(散列)存储结构
➢ 根据结点的值确定结点的存储地址。 ➢ 以结点中某个字段的值为自变量,通过
某个函数(称为散列函数)计算出对应 的函数值;再把i当作结点的存储地址。
int tmp; tmp=x;x=y;y=tmp; } 注意:a和b的值不会发生了交换。
第1章 概 论
39
采用指针的方式来回传形参的值,需将上 述函数改为:
void swap2(int *x,int *y)
{
int tmp; tmp=*x; /*将x的值放在tmp中*/ *x=*y; /*将x所指的值改为*y*/ *y=tmp; /*将y所指的值改为tmp*/
➢ 高时间效率:算法的时间效率是指算法 的执行时间。
➢ 低存储量需求:算法在执行时一般要求 额外的内存空间。
第1章 概 论
46
度量方法
➢ 事后统计的方法 缺陷:一是必须先运行依据算法编
制的程序;二是所得时间的统计量依赖 于计算机的硬件、软件等环境因素,有 时容易掩盖算法本身的优略。 ➢ 事前分析估算方法
9901
20
陈华

9902
12
王奇

9901
26
董强

9902
5
王萍

9901
第1章 概 论
11
逻辑关系
该表中的记录顺序反映了数据元素之间的逻辑关系, 用学号标识每个学生记录,这种逻辑关系可以表示为:
<1,8>,<8,34>,<34,20>,<20,12>,<12,26>,<26,5>
其中尖括号“<ai,ai+1>”表示元素ai和ai+1之间是相邻的, 即ai在ai+1之前,ai+1在ai之后。
} ADT Complex
第1章 概 论
32
1.2 算法和算法分析
第1章 概 论
33
1.2.1 算法及其表示
➢ 算法(Algorithms)是对特定问题求解 步骤描述的计算机指令的有限序列。其 中每一条指令表示一个或多个操作。
第1章 概 论
34
算法的5个重要特征
➢ 有限性:计算机的指令执行序列是有限 的,且每一步都可在有穷时间内完成。
抽象数据类型=数据元素集合+抽象运算
第1章 概 论
30
e1+e2i 例如,抽象数据类型复数的定义: ADT Complex { 数据对象:
D={e1,e2|e1,e2均为实数} 数据关系:
R1={<e1,e2>| e1是复数的实数部分,e2 是复数的 虚数部分 }
第1章 概 论
31
基本操作: AssignComplex(&Z,v1,v2):构造复数Z。 DestroyComplex(&Z):复数Z被销毁。 GetReal(Z,&real):返回复数Z的实部值。 GetImag(Z,&Imag):返回复数Z的虚部值。 Add(z1,z2,&sum):返回两个复数z1,z2的和。
处理的数据个数n的关系。
第1章 概 论
49
➢ 语句的频度(frequency count)指的是该语句重 复执行的次数。
➢ 算法的时间量度记作
T(n)=O(f(n))
它表示随问题规模n的增大,算法执行时 间的增长率和函数f(n)的增长率相同,T(n)称 做算法的渐进时间复杂度(asymptotic),简 称时间复杂度。
第1章 概 论
3
数据结构的内容
➢ 线性表 ➢ 栈与队列 ➢串 ➢ 数组
➢树 ➢图 ➢ 查找 ➢ 排序
第1章 概 论
4
数据结构的定位
数离数
据散据
描数结

述学构






过 计算

程 算法
描 方设
述 法计
第1章 概 论
5
第1章 概 论
6
1.1 什么是数据结构?
第1章 概 论
7
➢ 数据(Data):是所有能被输入到计算机中, 且能被计算机处理的符号的集合。它是计 算机操作的对象的总称,也是计算机处理 的信息的某种特定的符号表示形式。
第1章 概 论
24
LOC(i)=q+(i-1)*p
q—第一个元素所占单元的首地址 p—每个元素所占的单元数
第1章 概 论
25
链式存储结构
➢ 每个结点单独存储,无需占用一整块存 储空间
➢ 为了描述结点之间的关系,需要给每个 结点附加指针字段,用于存放相邻结点 的存储地址
第1章 概 论
26
索引存储结构
int n=2; while(n%2==0)
n+=2; printf(“%3d\n”,n); }
死循环
第1章 概 论
37
void exam2() {
除零错误
int x,y=0;
x=5/y;
printf(“%d,%d\n”,x,y);
}
第1章 概 论
38
1.2.2 算法描述
编写一个函数swap1(x,y),当执行语句 swap1(a,b)时,交换a和b的值。 void swap1(int x,int y) {
Stud数组起始地址
第1章 概 论
14
存放学生表的链表的结点类型StudType定义为:
typedef struct studnode
{ int no;
/*存储学号*/
char name[8];
/*存储姓名*/
char sex[2];
/*存储性别*/
char class[4];
/*存储班号*/
struct studnode *next; /*存储指向下一个学生的指针*/
第1章 概 论
28
1.1.4 数据结构和数据类型
➢ 基本数据类型 ➢ 指针类型 ➢ 数组类型 ➢ 结构体类型 ➢ 共用体类型 ➢ 自定义类型 ➢ 引用运算符
第1章 概 论
29
(2) 抽象数据类型
抽象数据类型(Abstract Data Type简写为 ADT)指的是用户进行软件系统设计时从问题 的数学模型中抽象出来的逻辑数据结构和逻 辑数据结构上的运算,而不考虑计算机的具体 存储结构和运算的具体实现算法。
第1章 概 论
47
1.3.1 算法时间复杂度分析
一个算法是由控制结构(顺序、分支和循环 三种)和原操作(指固有数据类型的操作)构成的, 则算法时间取决于两者的综合效果。
控制语句1 原操作

控制语句n 原操作
一个算法
第1章 概 论
48
相关素
➢ 依据的算法选用何种策略; ➢ 书写算法的程序设计语言; ➢ 编译程序所产生的机器代码的质量; ➢ 机器执行指令的 速度; ➢ 问题的规模,即算法的时间效率与算法
} 上述函数的调用改为swap2(&a,&b),
第1章 概 论
40
难点
引入“引用”的概念 例如:
int a=4; /*a为普通的整型变量*/ int &b=a; /*b是a的引用变量*/
相关文档
最新文档