数据结构.ppt
《数据结构.ppt》由会员分享,可在线阅读,更多相关《数据结构.ppt(91页珍藏版)》请在三一办公上搜索。
1、河北理工大学 陈丽芳,数 据 结 构,Data Structure,河北理工大学 陈丽芳,此表必须记住!,河北理工大学 陈丽芳,数据的逻辑结构:含义:反映数据元素之间逻辑关系的数据结构。包含两方面的信息:第一,表示数据元素的信息;第二,表示各数据元素之间的前后件关系。例1:B=(D,R),其中D是数据对象,R是该对象中所有数据成员之间的关系的有限集合。若有D=1,2,3,4,R=(1,2),(2,3),(3,4),则我们可以用图的形式画出该数据结构B:,河北理工大学 陈丽芳,例2:家庭成员数据结构:B=(D,R),D=父亲,儿子,女儿,R=(父亲,儿子),(父亲,女儿),则图形表示如下:,河北
2、理工大学 陈丽芳,例3:课程关系数据结构:B=(D,R),D=教师1,教师2,班级1,班级2,班级3,R=(教师1,班级1),(教师1,班级3),(教师2,班级1),(教师2,班级2),(教师2,班级3),则图形表示如下:,河北理工大学 陈丽芳,数据的逻辑结构可归结为以下四类:,线性结构,树形结构,图状结构,集合结构,不讨论,非线性结构,河北理工大学 陈丽芳,数据的逻辑、物理结构,数据的逻辑结构只抽象反映数据元素的逻辑关系数据的存储(物理)结构数据的逻辑结构在计算机存储器中的实现,河北理工大学 陈丽芳,分为:顺序存储结构 借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构
3、借助指示元素存储地址的指针表示数据 元素间的逻辑关系,数据的存储结构,NEXT,河北理工大学 陈丽芳,河北理工大学 陈丽芳,1536,元素2,1400,元素1,1346,元素3,元素4,h,链式存储,河北理工大学 陈丽芳,2.线性表,河北理工大学 陈丽芳,线性表的类型定义,线性结构特点:在数据元素的非空有限集中存在唯一的一个被称作“第一个”的数据元素存在唯一的一个被称作“最后一个”的数据元素除第一个外,集合中的每个数据元素均只有一个前驱除最后一个外,集合中的每个数据元素均只有一个后继,河北理工大学 陈丽芳,线性表是一种典型的线性结构。,数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储
4、结构上进行的。,河北理工大学 陈丽芳,2.1 顺序表上基本运算的实现在c语言中,顺序表用一维数组来实现存储。算法:插入删除,河北理工大学 陈丽芳,定义:线性表的插入是指在第I(1i n+1)个元素之前插入一个新的数据元素x,使长度为n的线性表,变成长度为n+1的线性表,需将第i至第n共(n-i+1)个元素后移,算法,插 入,河北理工大学 陈丽芳,线性表的插入是指在表的第i个位置上插入一个值为 x 的新元素,插入后使原表长为 n的表:(a1,a2,.,ai-1,ai,ai+1,.,an)成为表长为 n+1 表:(a1,a2,.,ai-1,x,ai,ai+1,.,an)。i 的取值范围为1=i=n
5、+1。,河北理工大学 陈丽芳,x,河北理工大学 陈丽芳,顺序表上完成这一运算则通过以下步骤进行:(1)将aian 顺序向下移动,为新元素让出位置;(2)将 x 置入空出的第i个位置;(3)修改 last 指针(相当于修改表长),使之仍指向最后一个元素。,河北理工大学 陈丽芳,算法如下:,for(j=n;j=i;j-)aj+1=aj;/元素后移ai=x;/插入元素n+;/表长度增加1,河北理工大学 陈丽芳,删除定义:线性表的删除是指将第i(1i n)个元素删除,使长度为n的线性表,变成长度为n-1的线性表,),需将第i+1至第n共(n-i)个元素前移,河北理工大学 陈丽芳,河北理工大学 陈丽芳,
6、算法如下:,for(j=i;jlen;j+)aj=aj+1;/元素前移len-;/表长度减1,河北理工大学 陈丽芳,2.2 线性表的链式实现和表示,线性链表线性链表的存储结构单链表的基本运算插入删除,河北理工大学 陈丽芳,特点:用一组任意的存储单元存储线性表的数据元素利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息结点数据域:元素本身信息指针域:指示直接后继的存储位置,线性表的链式存储结构,河北理工大学 陈丽芳,例 线性表(ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG),头指针,河北理工大学 陈丽芳,实现
7、,typedef struct node datatype data;struct node*next;LNode,*LinkList;;,定义的LNode是结点的类型,LinkList是指向Lnode类型结点的指针类型。,(*p)表示p所指向的结点(*p).datap-data表示p指向结点的数据域(*p).linkp-next表示p指向结点的指针域,定义:结点中只含一个指针域的链表叫,也叫单链表,线性链表,河北理工大学 陈丽芳,单链表的基本运算,插入删除,河北理工大学 陈丽芳,s-next=p-next;,p-next=s;,单链表的插入,插入:在线性表两个数据元素a和b间插入x,已知p指
8、向a,算法思路:1.找到第i-1个结点;若存在继续2,否则结束 2.申请、填装新结点;3.将新结点插入。结束。,河北理工大学 陈丽芳,删除:单链表中删除b,设p指向a,p-next=p-next-next;,单链表的删除,算法思路:1.找到第i-1个结点;若存在继续2,否则结束;2.若存在第i个结点则继续3,否则结束;3.删除第i个结点,结束。,河北理工大学 陈丽芳,循环链表,单链表上的访问是一种顺序访问,从其中某一个结点出发,可以找到它的直接后继,但无法找到它的直接前驱。因此,我们可以考虑建立这样的链表,具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍作改变,使得对表的处理
9、更加方便灵活。从单链表可知,最后一个结点的指针域为NULL,表示单链表已经结束。如果将单链表最后一个结点的指针域改为存放链表中头结点(或第一个结点)的地址,就使得整个链表构成一个环,又没有增加额外的存贮空间,称这样的链表为循环链表。,河北理工大学 陈丽芳,循环链表,优点:可以从任何一个结点出发访问到其他结点。单链表:只有从头结点(或第一个结点出发才能访问到其他结点),河北理工大学 陈丽芳,3.栈和队列,河北理工大学 陈丽芳,栈,栈是特殊的线性表,是操作受限的线性表,称限定性DS,栈的定义栈的存储实现和运算实现顺序栈,河北理工大学 陈丽芳,栈定义,栈(stack)栈的定义和特点定义:限定仅在表尾
10、进行插入或删除操作的线性表,表尾栈顶,表头栈底,不含元素的空表称空栈特点:先进后出(FILO)或后进先出(LIFO),河北理工大学 陈丽芳,堆栈操作?,出栈元素顺序:B C D A,河北理工大学 陈丽芳,栈的存储实现和运算实现,由于栈是运算受限的线性表,因此线性表的存储结构对栈也是适用的,只是操作不同而已。顺序栈链栈约定:栈顶指针指向栈顶元素。,河北理工大学 陈丽芳,3.2 队列,队列是特殊的线性表,是操作受限的线性表,称限定性DS,河北理工大学 陈丽芳,队列的定义及特点定义:队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表队尾(rear)允许插入的一端队头(front)允许删除
11、的一端队列特点:先进先出(FIFO),3.2.1 队列的定义,河北理工大学 陈丽芳,初始时,队列为空,有 front=-1 rear=-1队列元素个数=rear-front,front 指出实际队头元素所在位置的前一个位置.,河北理工大学 陈丽芳,顺序队列出入队,河北理工大学 陈丽芳,循环队列,为充分利用向量空间,克服“假上溢”现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列判断:空队列:s=0 并且 front=rear满队列:s=1 并且front=rear,河北理工大学 陈丽芳,利用模运算,河
12、北理工大学 陈丽芳,计算循环队列元素个数方法:,若frontrear元素个数=n-(front-rear)其中n是循环队列的容量。,河北理工大学 陈丽芳,在前面讨论的数据结构都属于线性结构,线性结构的特点是逻辑结构简单,具有单一的前驱和后继的数据关系。而现实中的许多事物的关系并非这样简单,如人类社会的族谱、各种社会组织机构以及城市交通、通讯等,这些事物中的联系都是非线性的,采用非线性结构进行描绘会更明确和便利。所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继)元素。树型结构和图型就是其中十分重要的非线性结构。,河北理工大学 陈丽芳,4.树与二叉树,树的
13、基本概念二叉树二叉树的性质二叉树的存储结构二叉树的基本操作遍历二叉树,河北理工大学 陈丽芳,树的定义,树是一类重要的非线性数据结构,是以分支关系定义的层次结构定义:树(tree)是n(n0)个结点的有限集T,其中:有且仅有一个特定的结点,称为树的根(root)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)特点:树中至少有一个结点根树中各子树是互不相交的集合,河北理工大学 陈丽芳,根,子树,河北理工大学 陈丽芳,基本术语结点(node)表示树中的元素,包括数据项及若干指向其子树的分支结点的度(degree)结点拥
14、有的子树数叶子(leaf)度为0的结点孩子(child)结点子树的根称为该结点的孩子双亲(parents)孩子结点的上层结点叫该结点的兄弟(sibling)同一双亲的孩子树的度一棵树中最大的结点度数结点的层次(level)从根结点算起,根为第一层,它的孩子为第二层深度(depth)树中结点的最大层次数,河北理工大学 陈丽芳,二叉树,定义性质特殊的二叉树二叉树的遍历,河北理工大学 陈丽芳,二叉树定义,定义:二叉树是n(n0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成特点每个结点至多有二棵子树(即不存在度大于2的结点)二叉树的子树有左、右
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构
链接地址:https://www.31ppt.com/p-2281519.html