数据结构_第1章概论
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3
家族中父子关系是一种层次结构--树 T 张一
张二
张三
张四 层次结构: 部门之间的隶属关系: 学校->系->科->班 领导和被领导之间领导关系: 主席->部长->司长->处长->科长
张二一
张三一
张ቤተ መጻሕፍቲ ባይዱ小
张三大
例4 无向图G
A
网络结构: 电网,电信网, 计算机通信网等。
G B C D
E
F
其中:A、B、C 等是顶点(vertex), 图中任意两个顶点之间都可能有关系。
注意:常用DataType表示抽象元素类型。
1.3 算法和算法分析 数据的运算是通过算法描述的。
1.算法----求解一个特定任务的指令的有限序列。 例.求a[0..n-1]中n个数的平均值(假定n>0)。 float average(float a[ ],int n) { int i;float s=0.0; //累加器赋初值 for (i=0;i<n;i++) s=s+a[i]; //a[i]累加到s中 s=s/n; //计算平均值 printf(“ave=%f”,s); //输出 return(s); //返回 } 其中:a,n为输入量;s为输出量。
数据逻辑结构分类
1.线性表 2.栈 3.队列,双队列 4.数组 5.字符串 1.树,二叉树 2.图
线性结构 数据结构 非 线 性 结 构
数据顺序存储结构和链式存储结构(物理结构,存储表示, 物理表示) 数据结构在计算机存储器中的映象(mapping)。 (1)顺序存储结构(向量,一维数组) 例. char a[5]={'A','B','C','D'}; A B C D E 0 1 2 3 4 a是一维数组 (2)非顺序存储结构(链接表:指针类型和结构类型定义) 例. 单链表 data next ┌─┬┐ ┌─┬┐ ┌─┬┐ ┌─┬─┐ Head ─→│A │┼→│B │┼→│C │┼→│D │^ │ └─┴┘ └─┴┘ └─┴┘ └─┴─┘ 4个结点的单链表
7.数据类型(data type)--是一个值的集合和定义在这个值上的一组操作的总称。 用数据类型定义数据结构。 (1)原子类型(如:int,char,float等) (2)结构类型(如:数组,结构,联合体等) 8.抽象数据类型(Abstract Data Type)---与计算机的实现无关的数据类型。 形式定义: ADT 抽象数据类型名 { 1.数据对象; 2.数据关系:一个或多个关系; 3.一组基本操作/运算 } ADT 抽象数据类型名
4.数据对象(data object)——
由性质相同(类型相同)的数据元素组成的集合。 数据对象是数据的一个子集。 例1 由4个整数组成的数据对象 D1={20,-30,88,45} 例2 由正整数组成的数据对象 D2={1,2,3,...} 例3 由26个字母组成的数据对象 D3={A,B,C,...,Z} 其中:D1,D3是有穷集,D2是无穷集。 5.抽象数据对象 ElemSet={某种同类型的数据元素}
例1 L=(20,-5,66,15,44)是一个线性表 例2 一张登记表DL
序号 1 2 3 4 姓 名 李 刚 王 霞 刘大海 李爱林 性 别 年 龄 男 25 女 29 男 40 男 44 记录1 记录2 记录3 记录4
其中:姓名、性别、年龄是数据项(item)、数据域(field); (姓名,性别,年龄)是记录(record), C语言将"记录"(record)定义为”结构”(struct); 登记表也是一个线性表。
数据逻辑结构和存储结构与运算三者之间有紧密的关系: 如:给定一种数据的逻辑结构,可采取顺序存储结构或 链接存储结构进行存储; 按定义的运算和运算性质的不同,施加于同一数据结构 上,则会导致有不同的种类的数据结构产生。 如:限制在线性表的一端做插入和删除操作,称该线 性表为栈; 若限制在线性表的一端插入,另一端删除操作,称该 线性表为队。 其栈和队都有顺序存储结构或链接存储结构,则它们 存储结构称为:顺序栈,链式栈,顺序队,链式队。
6.数据结构(data structure)---数据之间的相互关系,即数据的组织形式。 内容包括:数据逻辑结构、数据存储结构和数据运算。 数据逻辑结构:数据元素之间的逻辑关系。 数据存储结构:数据元素及其关系在存储器中的存储表示。 数据运算:定义在数据逻辑结构上的操作。如:查询,插入, 删除和修改,排序等。 数据逻辑结构有两大类: 线性结构:特征:若结构是非空集,则仅有一个开始结点和一个 终止结点;其他结点都只有一个前趋结点和一个后继结点。 非线性结构:特征:一个结点有多个前趋结点和后继结点。 数据存储结构有4种:顺序存储结构,链接存储结构,索引存储 结构和散列存储结构。
1.2 基本概念和术语
1.数据(data) ---所有能输入到计算机中并被计算机程序加工、处理 的符号的总称。 如:整数、实数、字符、声音、图象、图形等。 2.数据元素(data element)--数据的基本单位。(元素、记录、结点、顶点) 在计算机程序中通常作为一个整体进行考虑和处理。 3.数据项(data item)---是数据的不可分割的最小单位。如:姓名、年龄等 一个数据元素可由一个或多个数据项组成。 如: (姓名、年龄)
本课程的内容和任务
1.基本数据结构的定义、特性、运算与算法 1.1 线性结构:线性表;栈,队列,双队列;数组,串。 1.2 非线性结构:树,二叉树;图,网络。 2.数据结构的存储结构与实现 选择存储结构,设计算法 3.查找算法:顺序,折半,分块,哈希,二叉排序树等 4.排序算法:内部排序,外部排序 5.文件 6.基本应用与综合应用 要求具备的知识: c语言及程序设计,具有一定的程序设计能力。
第一章 绪
论
1.1 数据结构研究什么?
将现实世界中的数据描述及关系表示出来,并存储到计算机内, 供用户程序操作。 现实世界中的数据描述及关系: 4种:离散型,线性结构,层次结构,网状结构。 离散数学:研究离散型。 数据结构:研究线性结构,层次结构和网状结构。 线性结构:线性表表示。 层次结构:树形结构表示。 网状结构:图结构表示。 数据结构研究:数据逻辑结构,存储结构及施加其上的运算。