1-数据结构的基本概念和术语
数据结构基本概念和术语

数据结构基本概念和术语1. 嘿,你知道数据结构不?这可是个超酷的东西呢!就像盖房子得有个好的框架一样,数据结构就是数据在计算机里存放和组织的框架。
比如说,你有一堆玩具,你可以把它们随便扔在盒子里,这就好比是没有规划的数据存放,找起来可费劲了。
可要是你按照大小或者类型把玩具分类放在不同的小格子里,这就像是一种简单的数据结构,找起来就容易多了。
2. 数据结构里有个概念叫数组,这就像是一列小火车,每个车厢都能装东西,而且车厢是按顺序编号的。
我跟我朋友讲这个的时候,他还不信呢。
我就说,你看,假如你要存你们班同学的成绩,用数组就很方便,第1个车厢放第1个同学的成绩,第2个车厢放第2个同学的成绩,以此类推。
这多整齐啊,就像士兵排着队一样。
3. 链表这个数据结构可有点意思了。
想象一下,你和你的小伙伴们手拉手连成一串,这就是链表啦。
每个小伙伴就像链表中的一个节点。
我之前给我弟弟解释这个,他一脸懵。
我就说,你看你那些小卡片,如果在每张卡片上写个数字,然后把卡片按顺序用绳子串起来,这就类似链表了。
想要找其中一张卡片,就得顺着绳子一个一个找过去。
4. 栈这个概念,你可以把它想象成一个弹夹。
先进去的子弹最后才能打出来,这就是栈的特性,后进先出。
我在和同学讨论这个的时候,他说这很奇怪啊。
我就跟他说,你看食堂里叠放的餐盘,最后放上去的餐盘是不是最先被拿走啊,这就和栈是一个道理,是不是很神奇呢?5. 队列又不一样喽。
它就像排队买冰淇淋的队伍,先来的人先买到,先入先出。
我跟我表弟说这个的时候,他说这很简单嘛。
我就说,对啊,就像你们学校排队做早操,第一个站好的同学第一个出去,这就是队列在生活中的体现呀。
6. 树这个数据结构可复杂又有趣啦。
它就像一棵大树,有树干,有树枝,还有树叶。
根节点就是树干,树枝就是子节点。
我和我同事解释的时候,他觉得很难理解。
我就说,你看你们家的族谱,最上面的老祖宗就是根节点,下面的子孙后代就是各个子节点,一层一层的,这就是树结构呀。
C语言-绪论

1.5 算法分析
例如,斐波那契数列的算法和语句的的频度如下。
每一条语句的频度
f0=0;
1
f1=1;
1
printf(“%d,%d”,f0,f1);
1
for(i=2;i<=n;i++)
n
{
fn=f0+f1;
n-1
printf(“,%d”,fn);
n-1
f0=f1;
n-1
f1=fn;
n-1
}
每一条语句的右端是对应语句的频度(frequency count),即语
} ADT抽象数据类型名
例如,线性表的抽象数据类型描述如下:
ADT List {
数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R={<ai-1,ai>|ai-1,ai∈D,i=2,3,…,n} 基本操作:
InitList(&L) 初始条件:表L不存在。 操作结果:构造一个空的线性表。
1.5 算法分析
2.事前分析估算方法 这主要在计算机程序编制前,对算法依据数学中的统计方
法进行估算。这主要是因为算法的程序在计算机上的运行时
间取决于以下因素:
a.算法采用的策略、方法; b.编译产生的代码质量; c.问题的规模; d.书写的程序语言,对于同一个算法,语言级别越高, 执行效率越低;
e.机器执行指令的速度。
例如,求两个正整数m和n的最大公约数的算法可用以 下几种方式描述。
1.4 算法的特性和算法的描述
1.自然语言描述法 我们利用自然语言描述m是否为质数的算法如下: (1)输入正整数m和n; (2)m除以n,将余数送入中间变量r; (3)判断r是否为零。如果为零,n即为所求最大公约数,
数据结构复习

地址计算 以三对角矩阵为例
三对角矩阵中所有非零元素为3*n-2,可用一维数组s[3*n-2]存储.aij与s[k]
LOC(i,j)=LOC(0,0)+[3*i-1+(j-i+1)]*d
=LOC(0,0)+(2i+j)*d
4.3.2 稀疏矩阵
5、设长度为n的链队列用单循环链表表示,若只设头指针,则怎样进行入队和出队操作;若只设尾指针呢?
6、假设循环队列只设rear和quelen来分别指示队尾元素的位置和队中元素的个数,试给出判断此循环队列的队满条件,并写出相应的入队和出队算法,要求出队时需返回队头指针。
第四章 数组
4.1 数组的定义
(2)能否得到出栈序列423和432?并说明为什么不能得到或如何得到。
(3)请分析1、2、3、4的24种排列中,哪些序列可以通过相应的入出栈得到。
2、表达式求值
3、两个栈共享存储空间r[m],写出向第i个栈插入x,删除第i个栈的栈顶元素算法。
4、循环队列的优点是什么?如何判断它的空和满?循环队列的操作算法?
(2)二叉链表法
5.3 遍历二叉树
在二叉树的一些应用中,常常要求在树中查找具有某
种特征的结点,或者对树中全部结点逐一进行某种处
理。这就引入了遍历二叉树的问题,即如何按某条搜
索路径巡访树中的每一个结点,使得每一个结点均被
访问一次,而且仅被访问一次。
DLR——先(根)序遍历,
LDR——中(根)序遍历,
习题:6.2,6.3,6.5,6.6,6.7,6.12,6.13,6.14,6.19,6.21,6.26,6.42,6.43,6.47,
第六章 图
数据结构实用教程(C语言版)

返回到本节目录
1.1.3 数据的存储结构
1. 顺序存储结构 顺序存储结构:借助元素在存储器中的相对位 置来表示数据元素间的逻辑关系。 【例1.4】对于表1-1提出的学生信息登记表 进行存储,假定每个元素占用50个存储单元, 数据从1000号单元开始由低地址向高地址 存放,对应的顺序存储结构如表1-3所示。
2. 链式存储结构 链式存储结构:借助指示元素存储地址的指针 表示数据元素间的逻辑关系。 【例1.5】对于表1-1学生信息登记表进行链 式存储时,在每个数据元素后方附加一个指 向“下一个结点地址”的指针字段,用于存 放后继数据元素的存储地址,每个数据元素 的地址是随机的,可以不连续。对应的链式 存储结构见表1-4所示。
返回到本节目录
1.1.2 数据的逻辑结构
(3)树型结构 结构中的数据元素之间存在着“一对多”的关 系。 【例1.2】人机对弈 人与计算机进行对弈的部分图如图1-2为所示。
图1-2 人机对弈图
返回到本节目录
1.1.2 数据的逻辑结构
特点: 图中将每一个棋盘看作一个数据元素,则数据 元素之间的关系要比表1-1要复杂许多。 图中数据元素之间是一对多关系,即一个数据 元素向上和一个数据元素相连(称为双亲结 点),向下和多个数据元素相连(称为孩子 结点)。我们将这种关系称为“树型结构”。 4)图形结构或网状结构 结构中的任意数据元素之间都可以有关系,元 素之间存在着“多对多”的关系。
返回到本节目录
1.2.1 算法的概念
4.算法的描述 为了表示一个算法,可以用多种不同的方法, 常用的有自然语言、传统流程图、结构化流 程图、N-S流程图等表示。本书采用C的描 述语言实现对各种数据结构及算法的操作描 述,算法是以函数形式描述,描述如下:
数据结构基础知识

复习提纲第一章数据构造概述根本概念与术语〔P3〕1.数据构造是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的根本单位3.数据对象一样性质的数据元素的集合4.数据构造三方面容:数据的逻辑构造.数据的存储构造.数据的操作.〔1〕数据的逻辑构造指数据元素之间固有的逻辑关系.〔2〕数据的存储构造指数据元素及其关系在计算机的表示( 3 ) 数据的操作指在数据逻辑构造上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据构造、二元组2、根据数据元素之间关系的不同,数据的逻辑构造可以分为集合、线性构造、树形构造和图状构造四种类型。
3、常见的数据存储构造一般有四种类型,它们分别是___顺序存储构造_____、___链式存储构造_____、___索引存储构造_____和___散列存储构造_____。
4、以下程序段的时间复杂度为___O(N2)_____。
int i,j,*;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1*+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表构造由n(n>=0)个具有一样性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表构造#define MA*SIZE 100typedef int DataType;Typedef struct{DataType items[MA*SIZE];Int length;}Sqlist,*LinkList;2.单链表(1)链表结点构造//链表的节点构造Typedef struct Node{int data;struct Node *ne*t;} Lnode,*Pnode,*LinkList;(2)结点遍历void TraverseList(LinkList t){LinkList p;while(t){p=t;t=t->ne*tfree(p);}}(3)链表操作算法:初始化、插入、输出、删除void InitList(LinkList *h){*h=(LinkList)malloc(sizeof(LNode));if(!h){print("初始化错误〞);return;}(*h)->ne*t=NULL;}void InsertList(LinkList h,int pos,datatype *){ LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1)print("插入位置出错!!〞);InitList(&q);q->ne*t=NULL;q->data=*;}void DeleteList(LinkList h,int pos){LinkList p=h,q;int i=0;while(p&&i<pos-1){p=p->ne*t;i++;}if(!p||i>pos-1){cout<<〞删除位置错误〞;return;}q=p->ne*t;p->ne*t=q->ne*t;free(q);}-----------------------------------------------------------------------------------------------------------------1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。
数据结构

第1章绪论1.1 什么是数据结构数据与数据之间的关系1.2 基本概念和术语1.基本定义(1).数据(Data) :是客观事物的符号表示。
在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。
(2)数据项(Data Item):一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
数据项是对客观事物某一方面特性的数据描述。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
2.举例如字符集合C={‘A’,‘B’,‘C’,…}--C表示字符对象;A ,B等表示数据元素;再如学生集合Students={“Zhangsan”, “Lisi”,…}Zhangsan(ID,name,age,grade,…)……--Students表示学生对象;“Zhangsan”、“Lisi”表示数据元素;Zhangsan的ID、name、age等表示数据项。
3.数据结构的形式定义数据结构的形式定义是一个二元组:Data-Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集4.逻辑结构与物理结构(1)数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。
(2)数据结构在计算机中的表示(映像)称为数据的物理结构。
数据结构的存储方式1)顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
2)链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)。
3)例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0} ,两种不同的存储结构。
数据结构基本术语

目录
数据 结构 基本 术语
2021年1月30日星期六
线性表的逻辑结构是:除第一个元素外,其他 元素只有一个前驱,除最后一个元素外,其他元素 只有一个后继。
线性表在计算机中的表示和存储有两种方式: 用连续的存储单元存储; 用分散的存储单元存储,并用指针将其连接。
目录
数据 结构 基本 术语
2021年1月30日星期六
目录
数据 结构 基本 术语
2021年1月30日星期六
数据对象(data object):数据对象是性质相同 的数据元素组成的集合,是数据的一个子集。数据元 素是数据对象的数据成员。
例如,正整数的数据对象是集合N={1,2,3,4,…}, 字母字符数据对象是集合 N={‘A’,’B’,’C’,…,’Z’}。
目录
数据 结构 基本 术语
2021年1月30日星期六
1.4 数据类型
1.数据类型
数据类型(data type)是一个值的集合和定义在 这个值集上的一组操作的总称。 按“值”是否可分解,把数据类型分为两类:
目录
数据 结构 基本 术语
2021年1月30日星期六
计算机中存储信息的最小单位叫做位(bit),8位 可表示一个字节(byte),两个字节称为一个字(word), 字节、字或更多的二进制位可称为位串,这个位串称 为元素(element)或结点(node)。当数据元素由若干 个数据项组成时,则位串中对应于每个数据项的子位 串称为数据域(data field)。
数据结构(data structure):是相互之间存在一 种或多种特定关系的数据元素的集合。数据结构包括 数据的逻辑结构和存储结构。
目录
数据 结构 基本 术语
1.2 数据的逻辑结构
数据结构复习大纲

数据结构复习大纲第一章绪论1. 数据结构的基本概念和术语1.1 数据、数据元素、数据项、数据结构等基本概念1.2 数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系1.3 数据结构的两大逻辑结构和四种常用的存储表示方法2. 算法的描述和分析2.1 算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念2.2 算法描述和算法分析的方法,对于一般算法能分析出时间复杂度第二章线性表1. 线性表的逻辑结构1.1 线性表的逻辑结构特征2. 线性表的顺序存储结构2.1 顺序表的含义及特点,即顺序表如何反映线性表中元素之间的逻辑关系2.2 顺序表上的插入、删除操作及其平均时间性能分析3. 线性表的链式存储结构3.1 链表如何表示线性表中元素之间的逻辑关系3.2 链表中头指针和头结点的使用3.3 单链表、双(向)链表、循环链表链接方式上的区别3.4 单链表上实现的建表、查找、插入和删除4. 顺序表和链表的比较4.1 顺序表和链表的主要优缺点4.2 针对线性表上所需要执行的主要操作,知道选择顺序表还是链表作为其存储结构才能取得较优的时空性能第三章栈和队列1.栈的逻辑结构、存储结构及其相关算法1.1 栈的逻辑结构特点,栈与线性表的异同1.2 顺序栈和链栈上实现的进栈、退栈等基本算法1.3 栈的“上溢”和“下溢”的概念及其判别条件2. 队列的逻辑结构、存储结构及其相关算法2.1 队列的逻辑结构特点,队列与线性表的异同2.2 顺序队列(主要是循环队列)和链队列上实现的入队、出队等基本算法2.3 队列的“上溢”和“下溢”的概念及其判别条件2.4 使用数组实现的循环队列取代普通的顺序队列的原因2.5 循环队列中对边界条件的处理方法3. 栈和队列的应用3.1 栈和队列的特点,什么样的情况下能够使用栈或队列3.2 表达式求值的算法思想,及栈变化情况。
第四章串、数组和广义表1.串1.1 串的有关概念及基本运算1.2 串与线性表的关系2.多维数组2.1 多维数组的逻辑结构特征2.2 多维数组的顺序存储结构及地址计算方式2.3 数组是一种随机存取结构的原因2.4 矩阵的压缩存储(对称矩阵、三角矩阵、稀疏矩阵)的表示方式和对应的地址计算方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状况和应返回的结果。若初始条件为空,则省略之。
2014-2-20
例9、抽象数据类型"复数"的定义
• ADT Complex { 数据对象:D = {e1,e2 | e1,e2 RealSet } 数据关系:R1 = {<e1,e2> | e1是复数的实部,e2是复数的虚部 } 基本操作: InitComplex( &Z, v1, v2 ) 操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。 DestroyComplex( &Z) 初始条件:复数已存在。 假设:z1和z2是上述定义的复数 操作结果:复数Z被销毁。 则 Add(z1, z2, z3) 操作的结果 GetReal( Z, &realPart ) 即为用户要求的结果 初始条件:复数已存在。 z3 = z1 + z2 操作结果:用 realPart 返回复数Z的实部值。 GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用 ImagPart 返回复数Z的虚部值。 Add( z1,z2, &sum ) 初始条件:z1,z2 是复数。 操作结果:用sum返回两个复数z1,z2的和值。 } ADT Complex
数 据 结 构
2014-2-20
第一章 绪 论
学习目的:掌握数据结构的基本概
念和术语。
重点难点:数据结构的基本概念。
2014-2-20
教学内容
1.1 什么是数据结构 1.2 基本概念和术语
2014-2-20
1.1 什么是数据结构
• IT 计算机科学家 pascal语言的创始人Niklaus Wirth(尼古拉 斯· 沃斯 )教授在1976年出版了一本书:“Algorithms + Data Structures = Programs”说明了算法和数据结构是进行程序设 计的两大要素。
级编程语言中提供的数据类型来描述存储结构。
2014-2-20
5、数据类型
• 数据类型是一个“值”的集合和定义在此集合上 的“一组操作”的总称。 • 在用高级程序语言编写的程序中,必须对程序中 出现的每个变量、常量或表达式,明确说明它们 所属的数据类型。程序中对变量或常量说明其所 属类型的作用是,对它们加上两个约束条件:一 是可取值的范围,二是可进行的操作。 • 不同类型的变量,其所能取的值的范围不同, 所能进行的操作不同。
a1,a2,a3之间存在“次序”关系<a1,a2>,<a2,a3> ,
<x,y> 意为 x 和 y 之间存在“x领先于y”的次
序关系。
a1a2a3 ≠ a2a1a3
2014-2-20
例6 可以用下述数据结构来描述2行3列的矩阵: 它是一个含6个数据元素{a1,a2,a3,a4,a5,a6} 的集合,且集 合上存在“行关系”和“列关系”两个次序关系,其中: – 行row={<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>} – 列col={<a1,a4>,<a2,a5>,<a3,a6>}
(映象)。故又称数据"存储结构"。 它包括数据元素的表示和关系的表示。
“数据元素”的映象 ? “关系”的映象 ?
2014-2-20
① 数据元素的映象方法:
用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
4、数据结构
1)概念:是相互之间存在一种或多种特定关系的数据元 素的集合,即带“结构”的数据元素的集合。 “结构”即指数据元素之间存在的约束关系。 数据结构是一堆数据元素和这些数据元素之间的关系 的总和。
2014-2-20
例5 一个12位数的十进制数可以用3个4位的十进
制数表示: 3214,6587,9345--a1(3214),a2(6587),a3(9345)
2014-2-ቤተ መጻሕፍቲ ባይዱ0
2)数据结构的形式定义
• 数据结构是一个二元组 Data_Structures = ( D,S ) • 其中:D是数据元素的有限集, S是D上关系的有限集。 例7 复数的二元组定义
复数由实部和虚部构成(构成元素),两者之间存在着一种次
序关系(逻辑关系)。 可以表示为: Complex=(C,R) 其中,C={ c1,c2} R={<c1,c2>} 说明:< >表示有序数对,用图示法表示时画箭头
例如描述一个学生的信息的数据元素可由下列6个数据项组成。
称之为组合项
• 数据项是数据结构中讨论的“最小单位”。
• 数据元素是数据项的集合。
2014-2-20
3、数据对象
• 是性质相同的数据元素的集合,它是数据的一个子集。 如: –整数数据对象 N = { 0, 1, 2, „ } –字母字符数据对象C={ ‘A’,’B’,„„‘Z’} • 在同一个数学模型中的数据元素必然具有相同特性。
2014-2-20
课堂总结
主要内容:什么是数据结构、数据
结构的基本概念。
重点难点:数据结构的基本概念。
2014-2-20
作业
• 复习,理解相关概念
• 预习, 算法及其分析
2014-2-20
数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名
2014-2-20
其中基本操作的定义格式为: 基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉 赋值参数 只为操作提供输入值。
引用参数 以&打头,除可提供输入值外,还将返回操作
2014-2-20
例如,C 语言中提供的基本数据类型有:
整型 int 浮点型 float 实型( C++语言) 双精度型 double 字符型 char 空类型 void
2014-2-20
6、抽象数据类型(Abstract Data Type 简称ADT)
–指一个数学模型以及定义在该模型上 的一组操作。
2014-2-20
1.计算机是怎么解决问题的?
抽象 模型
设计 算法
编码
调试 测试
得出 结果
很多数值计算问题的数学模型通常可用一组线性或非线性的代数方程组或 微分方程组来描述: 如:结构静力分析计算---线性代数方程组,全球天气预 报---环流模式方程 2014-2-20
如今计算机所处理的是大量的非数值计算的 程序设计问题:
2014-2-20
②关系的映象方法:
•顺序映象 顺序存储结构
借助元素在存储器中相对的位置来表示数据元素之 间的关系。地址是连续的。如数组。 例8 存储复数 z=3.0-2.3i
用顺序结构,内存存储情况为:
2001 2004 2005 2008
2014-2-20
3.0 -2.3
•链式映象
链式存储结构
• 要使计算机能够更有效地进行这些非数值性处理, 就必须弄清楚这些操作对象的特点,在计算机中 的表示方式以及各个操作的具体实现手段。这些 就是《数据结构》这门课程研究的主要内容。
2014-2-20
1.2 基本概念和术语
1、数据
是所有能被输入到计算机中,且能被计算机处理的所 有符号(数字、字符等)的集合,它是计算机操作对象的 总称,是计算机处理的信息的载体,是信息的某种特定 的符号表示形式。 数据是个集合,如果用集合的表示方法来写的话,就 是: 数据={x|x是计算机操作的对象}
( )表示无序数对,用图示法表示时画线段
2014-2-20
3)数据的“逻辑结构”
数据的逻辑结构:描述数据元素之间的逻辑关
系,不依赖于具体表示,是抽象的。可归结为以下 四类:
集合结构 线性结构 树形结构 一对一
一对多
图/网状结构
2014-2-20
多对多
4)数据的存储结构
—— 逻辑结构在存储器中的具体实现表示
–非数值计算问题的数学模型:数学模型的表 示和求解方法--数据结构
• 由以上几个例子可见,描述这类非数值计算问题的数学 模型不再是数学方程,而是诸如表、树、图之类的数据 结构。
2014-2-20
2.什么是数据结构?
• 数据结构是一门研究非数值计算的程序设计问题 中计算机的操作对象以及它们之间的关系和操作 的学科。
2、数据元素
是数据(集合)中的一个“个体”,在计算机中通常作 为一个整体进行考虑和处理,是数据结构中讨论的“基本 单位”,但不是“最小单位”。
2014-2-20
数据元素分类
• 一类是不可分割的“原子”型数据元素,如:整数“5”,字符 “N” 等 • 另一类是由多个款项构成的数据元素,其中每个款项被称为一个“数据项”。
a1 a3 a5 a2 a4 a6 a1 a2 a3 a4 a5 a6
a1 a 2 a3 a 4 a5 a 6
同样的这6个数据元素组成的一维数组{a1,a2,a3,a4,a5,a6}的 数据元素之间存在如下的次序关系:{<ai,ai+1> | i=1,2,…5} 同样的数据元素,不同的关系构成了不同的结构,因此数据结构 是带结构的数据元素的集合。或者说,数据结构是相互之间存在 着某种逻辑关系的数据元素的集合。
例4 煤气管道的铺设问题。如下图:需为城市的各小区之间铺 设煤气管道,对 n 个小区只需铺设 n-1 条管线,由于地理环 境不同等因素使各条管线所需投资不同(如图上所标识),如何 使投资成本最低?