2023年自考02142数据结构导论串讲笔记.docx

上传人:可****阿 文档编号:58270804 上传时间:2022-11-07 格式:DOCX 页数:23 大小:39.58KB
返回 下载 相关 举报
2023年自考02142数据结构导论串讲笔记.docx_第1页
第1页 / 共23页
2023年自考02142数据结构导论串讲笔记.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《2023年自考02142数据结构导论串讲笔记.docx》由会员分享,可在线阅读,更多相关《2023年自考02142数据结构导论串讲笔记.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第一张 概论1.1 引言 两项基本任务: 数据表达, 数据解决 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。机外表达-逻辑结构-存储结构解决规定-基本运算和运算-算法1.2 数据,逻辑结构和运算 数据:凡是可以被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和解决。 又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整拟定的实际意义,或不被当做一个整体对待。 又称字段或域,是数据不可

2、分割的最小标示单位。1.2.2 数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点:1. 逻辑结构与数据元素自身的形式,内容无关。2. 逻辑结构与数据元素的相对位置无关3. 逻辑结构与所含结点个数无关。运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结

3、构的加工。加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新同一逻辑结构S上的两个运算A和B, A的实现需要或可以运用B,而B的实现不需要运用A,则称A可以归约为B。 假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。 将逻辑结构S和在S上的基本运算集X的整体(S,X)称为一个数据结构。 数据结构涉及逻辑结构和解决方式。1.3 存储实现和运算实现 由于逻

4、辑结构是设计人员根据解题需要选定的数据组织形式,因此存储实现建立的机内表达应遵循选定的逻辑结构。另一方面,由于逻辑结构不涉及结点内容即数据元素自身的表达,因此存储实现的另一重要内容是建立数据元素的机内表达。按上述思绪建立的数据的机内表达称为数据的存储结构。 存储结构涉及三部分:1 存储结点,每个存储结点存放一个数据元素。2 数据元素之间关联方式的表达,也就是逻辑结构的机内表达。3 附加设施,如方便运算实现而设立的“哑结点”等。 四种基本存储方式:1 顺序存储方式:每个存储结点只含一个数据元素。所有存储结点相继存放在一个连续的存储区里。用存储结点间的位置关系表述数据元素之间的逻辑关系。2 链式存

5、储方式:每个存储结点不仅具有一个数据元素,还包含一组指针。每个指针指向一个与本结点有逻辑关系的结点,即用附加的指针表达逻辑关系。3 索引存储方式:每个存储结点只含一个数据元素,所有存储结点连续存放。此外增设一个索引表,索引指示各存储结点的存储位置或位置区间端点。4 散列存储方式:每个结点含一个数据元素,各个结点均匀分布在存储区里,用散列函数指示各结点的存储位置或位置区间端点。1.3.2 运算实现 运算只描述解决功能,不涉及解决环节和方法;运算实现的核心是解决环节的规定,即算法设计。 算法:算法规定了求解给定问题所需的所有解决环节及其执行顺序,使得给定类型的任何问题能在有限时间内被机械的求解。

6、算法分类: 1:运营终止的程序可执行部分:又称为程序 2: 伪语言算法:不可以直接在计算机上运营,但容易编写和阅读。 3:非形式算法:用自然语言,同时也许还使用了程序设计语言或伪语言描述的算法。1.4 算法分析 算法质量评价指标:1 对的性:可以正的确现解决规定2 易读性:易于阅读和理解,便于调试,修改和扩充3 健壮性:当环境发生变化,算法可以适当做出反映或解决,不会产生不需要的运营结果4 高效率:达成所需要的时空性能。如何拟定一个算法的时空性能,称为算法分析一个算法的时空性能是指该算法的时间性能和空间性能,前者是算法包含的计算量,后者是算法需要的存储量。算法在给定输入下的计算量:1 根据该问

7、题的特点选择一种或几种操作作为“标准操作”。2 拟定每个算法在给定输入下共执行了多少次标准操作,并将本次数规定为该算法在给定输入下的计算量。若无特殊说明,将默认以赋值语句作为标准操作。最坏情况时间复杂性:算法在所有输入下的计算量的最大值作为算法的计算量平均时间复杂性:算法在所有输入下的计算量的加权平均值作为算法的计算量。算法的输入规模(问题规模)是指作为该算法输入的数据所含数据元素的数目,或与此数目有关的其他参数。 常见时间复杂性量级:1 常数阶:O(1) 即算法的时间复杂性与输入规模N无关或N恒为常数。2 对数阶:Olog2 N 3 线性阶:O(N) 4 平方阶:O(N2)5 指数阶:O(2

8、N次方)通常认为指数阶量级的算法实际是不可计算的,而量级低于平方阶的算法是高效率的第二章 线性表2.1 线性表的基本概念 线性结构:线性结构是N(N大于等于0)个结点的有穷序列。 A I 称为Ai+1的直接前趋,A i+1称为Ai 的直接后继。为满足运算的封闭性,通常允许一种逻辑结构出现不含任何结点的情况。不含任何结点的线性结构记为()或 线性结构的基本特性:若至少具有一个结点,则除起始节点没有直接前趋外,其他结点有且只有一个直接前趋,除终端结点没有直接后继外,其他结点有且只有一个直接后继。2.1.2 线性表线性表的逻辑结构是线性结构。所含结点个数称为线性表的长度(表长)。表长为0的是空表。线

9、性表的基本运算:1 初始化 initiate (L): 加工型运算,其作用是建立一个空表L= 。2 求表长 length (L):引用型运算,其结果是线性表L的长度。3 读表元 get (L,i):引用型运算。若1小于等于i小于等于length(L),其结果是L的第i个结点,否则为一特殊值。4 定位(按值查找)locate(L,X):引用型运算。若L中存在一个或多个值与X相等,结果为这些结点的序号最小值,否则,运算结果为0。5 插入 insert (L,X,i):加工型运算。在L的第i个位置上增长一个值为X的新结点,参数i的合法取值范围是1-L+1。6 删除 delete (L,i):加工型运

10、算。撤消L的第i个结点ai, i的合法取值范围是1-N。2.2 线性表的顺序实现2.2.1 顺序表 顺序表是线性表的顺序存储结构,即按顺序存储方式构造的存储结构。 顺序表基本思想:顺序表的一个存储结点存储线性表的一个结点的内容,即数据元素(不含其他信息),所有存储结点按相应数据元素间的逻辑关系决定的顺序依次排列。 顺序表的特点:逻辑结构中相邻的结点在存储结构中仍相邻。 顺序表的类C语言描述:p17 Const maxsize=顺序表的容量 Typedef struct datatype date maxsize Int last; sqlist;Sqlist L;L表达线性表的长度,last-

11、1 是终端结点在顺序表中的位置。常数maxsize为顺序表的容量。表长L.last , 终端结点 L.dataL.last-12.2.2 基本运算在顺序表上的实现 1 插入Void inset_sqlist (sqlist L,datatype x, int i) if (L.last = maxsize) error(表满); /*溢出*/If (iL.last+1) error (非法位置);For (j=L.last ; j=I; j-) L.dataj = L.data j-1; /*依次后移*/ L.datai-1 = x; /*置入*/ L.last =L.last+1 /*修改表

12、长*/ 2. 删除Void delete_sqlist ( sqlist L, int I ) /*删除顺序表L中第i个位置上的结点*/ If ( ( iL.last) error (非法位置);For ( j= i+1; j= L.last; j+) L.data j-2 = L.data j-1 ; /*依次前移,注意第一个L.dataj-2存放ai*/ L.last=L.last-1 /*修改表长*/3 定位Int locate_sqlist (sqlist L , datatype X) /*在顺序表中从前往后查找第一个值等于X的结点。若找到则回传该结点序号,否则回传0*/ I=1 ;

13、While ( ( i= L.last) & (L.datai-1!=x) ) /*注意:ai在L.datai-1中*/ i+; /*从前往后查找*/if (i next = NULL; return(t); 此算法说明的问题:1 语句 t = malloc(size); 有双重作用:1 由malloc自动生成一个类型为node的新结点。2指针型变量t得到一个值即指针,该指针指向上述新结点。2 要生成新结点必须通过调用malloc才干实现。3 语句t - next=NULL的作用是将头结点*t的链域置为NULL。4 为了建立一个空表,可定义一个lklist类型的变量head,并通过调用head

14、 =initiate_lklist( )使head成为指向一个空表的头指针。2 求表长 Int length_lklist(lklist head) /*求表head的长度,P是pointer类型的变量*/ p=head; J=0; While (p -next!=NULL) p=p-next; J+; Return (j ); 3 按序号查找 Pointer find_lklist ( lklist head ,int I ) /*在单链表head中查找第i个结点。若找到则回传指向该结点的指针,否则回传null*/ p= head; j=0; While ( p-next !=NULL)&(

15、 jnext; j+; If (i=j) return (p); Else return(NULL); 4 定位 Int locate_lklist ( lklist head, datatype x) p=head ; j= 0;While ( (p-next!=NULL)&(p-data!=x) p= p-next; j+; If p-data =x return(j); Else return (0); 5删除 Void delete_lklist ( lklist head, int i) p= find_lklist (head,i-1); /*调用按序号查找算法*/If (p!=N

16、ULL)&(p-next!=NULL)q=p-next;p-next = q-next;free (q); else error(不存在第i个结点) free是库函数,结果是释放q所指结点占用的内存空间,同时q的值变成无定义。6 插入 Void insert_lklist( lklist head,datatyped x ,int i) P=find_lklist (head, i-1);If ( p=NULL)Error (不存在第i个位置) Else s= malloc (size); s-data= x; s-next=p-next; p-next =s; 2.5 其他链表 循环链表尾结

17、点的链域值不是NULL,而是指向头结点的指针。优点是从任一结点出发都能通过后移操作而扫描整个循环链表。但为找到尾结点,必须从头指针出发扫描表中所有结点。改善的方法是不设头指针而改设尾指针。这样,头结点和尾结点的位置为:rear-next-next 和rear.双链表:在每个结点中增长一个指针域,所含指针指向前趋结点。 双链表的摘除*P的操作:p-prior-next=p-next; p-next-prior=p-prior; 链入操作:P后面链入*q: q-prior=p; q-next=p-next; p-next-prior=q; p-next =q; 2.6顺序实现与链接实现的比较 空间

18、性能的比较:存储结点中数据域占用的存储量与整个存储结点占用存储量之比称为存储密度。顺序表=1,链表top=0; Return(1); 2. 进栈 Int push(sqstackTp *sq, datatype x) if (s-top = sqstack_maxsize-1) error(“栈满”);return 0;Elsesq-top+; Sq-datasq-top=x; Return(1); 3 退栈Int pop(sqstackTp *sq,datatype *x) if (sq-top=0) error(“下溢”);return(0);Else *x=sq-datasq-top;S

19、q-top-;Return(1); 4 判栈空 Int emptystack(stackTp *sq)if sq-top=0 Return(1);Else return(0); 5 取栈顶元素Int gettop( sqstackTp *sq, datatype *x)if(sq-top=0) return(0);Else*x =sq-datasq-top;Return(1); 3.1.3栈的链接实现 链栈由栈顶指针ls唯一拟定。栈中其他结点通过他们的next域链接起来。栈底结点的next域为NULL。由于链栈自身没有容量限制,所以不会出现栈满情况。 31.5 栈的简朴应用和递归栈与函数调用:

20、 函数调用时,先保存的位置后返回,后保存的位置先返回。所以每碰到一个函数调用便立刻将相应的返回位置进栈,调用结束时,栈顶元素正好是此函数的返回位置。递归与栈: 满足递归的条件:1 被定义项在定义中的应用品有更小的尺度。2 被定义项在最小尺度上的定义不是递归的。3.2 队列 队列也可以当作一种受限的线性表,插入限定在表的某一端进行(队尾),删除限定在另一端进行(队头) 队列又称先进先出线性表。 队列的基本运算:1 队列初始化initQueue(Q) 加工型运算,设立一个空队列Q2 入队列enQueue(Q,X)加工型运算,将X插入到队列Q的队尾。若原队列为空,则X为原队尾结点的后继,同时是新队列

21、的队尾结点。3 出队 outQueue(Q,X)加工型运算,若队列Q不空,则将队头元素赋给X,并删除队头结点,其后继成为新的队头结点。4 判队列空 emptyQueue(Q) 引用型运算,若队列Q为空,则返回1,否则为05 读队头gethead(Q,x)引用型运算,Q不空时由参数X返回队头结点的值,否则给一特殊标志。队列的顺序实现: 队列的顺序实现由一个一维数组及两个分别指示队头和队尾的变量组成,称为队头指针和队尾指针。约定队尾指针指示队尾元素在一维数组中的当前位置,队头指针指示队头元素在一维数组中的当前位置的前一个位置。 假如按sq.rear=sq.rear+1; sq.datasq.rea

22、r=x和sq.front=sq.front+1分别进行入队和出队操作,则会导致“假溢出。”循环队列的入队操作:sq.rear=(sq.rear+1)%maxsize; sq.datasq.rear=x 出队操作:sq.front=(sq.front+1)%maxsize;判断循环队列队满的条件:(sq.rear+1)%maxsize)=sq.front 队空的条件:sq.rear=sq.front3.3 数组二维数组可以当作是一个被推广的线性表,这种线性表的每一个数据元素自身也是一个线性表。数组只有两种基本运算:1 读:给定一组下标,读取相应的数据元素2 写:给定一组下标,修改相应的数据元素数

23、组元素的存储位置是下标的线性函数,计算存储位置所需的时间取决于乘法的时间,因此,存取任一元素的时间相等。通常将具有这一特点的存储结构成为随机存储结构。3.3.3矩阵的压缩存储 压缩存储的基本思想:值相同的多个元素只分派一个存储空间,零元素不分派空间。 要压缩的矩阵分为两种1 特殊矩阵:对称矩阵,三角矩阵。值相同的元素或零元素的分布有一定规律叫特殊矩阵。 对称矩阵通常存储下三角,n阶方阵需要n*(n+1)/2个存储单元 三角矩阵需要n*(n+1)/2+1个存储单元,最后一个单元存储相同的常数。2 稀疏矩阵:零元素远多于非零元素,且非零元素的分布没有规律。用三元组表存储稀疏矩阵,只存储非零元素。(

24、I,j,aij)第四章 树4.1 树的基本概念 树的定义: 树是n(n0)个结点的有穷集合,满足:1 有且仅有一个称为根的结点。2 其余结点分为m(m=)个互不相交的非空集合,这些集合中每一个都是一棵树,称为根的子树。 有关术语: 树上任一结点所拥有的子树的数目称为该结点的度。度为0的结点称为叶子或终端结点。度大于0的结点称为非终端结点或分支点。一棵树中所有结点度的最大值称为该树的度。 若结点A是B的直接前趋,则称A是B的双亲或父节点,称B为A的孩子或子节点。父节点相同的结点互称为兄弟。 一棵树的任何结点(不涉及根节点)称为根的子孙,根节点称为其他节点的祖先。 结点的层数(或深度)从根开始算,

25、根的层数为1,其他节点的层数为其双亲的层数加1。树中结点层数的最大值称为该树的高度或深度。 树的基本运算:1 求根 ROOT(T) 引用型运算,结果是树T的根结点。2 求双亲 PARENT (T,X) 引用型运算,结果是结点X在树T上的双亲,若X是树T的根或X不在T上,则结果为一特殊标志。3 求孩子CHILD(T,X,I) 引用型运算,结果是树T上结点X的第i个孩子,若X不在T上或X没有第i个孩子,结果为一特殊标志。4 建树 CREATE (X,T1.,TK) ,K=1,加工型运算,建立一棵以X为根,以T1.TK为第1K课子树的树。5 剪枝DELETE(T,X,i)加工型运算,删除树T上结点X

26、的第i棵子树,若T无第i棵子树,则操作为空。4.2 二叉树 二叉树是节点的有穷集合,它或者是空集,或者同时满足下述两个条件:1 有且仅有一个称为根的结点。2 其余结点分为两个互不相交的集合T1,T2,都是二叉树,并且T1,T2有顺序关系,T1在T2之前,他们分别称为根的左子树和右子树。二叉树的五种形态: 空二叉树,只含根的二叉树, 只有非空左子树的二叉树,只有非空右子树的二叉树,同时有非空左右子树的二叉树。二叉树的基本运算:1 初始化INITIATE(BT) 加工型运算,作用是设立一棵空二叉树2 求根ROOT(BT)引用型运算,结果是二叉树BT的根节点,若BT为空二叉树,结果为一特殊标志。3

27、求双亲PARENT(BT,X) 引用型运算,结果是结点X在二叉树BT上的双亲,若X是根或不在BT上,结果为一特殊标志4 求左孩子LCHILD(BT,X)右孩子RCHILD(BT,X)引用型运算,结果分别为结点X在BT上的左,右孩子。若X为BT的叶子或X不在BT上,结果为一特殊标志。5 建树CREAT(X,LBT,RBT)加工型运算,建立一棵X为结点,LBT,RBT为左右子树的二叉树。6 剪枝DELETEFT(BT,X)和DELETEHT(BT,X)加工型运算,删除BT结点X的左右子树,若无,运算为空。 二叉树的性质:1 二叉树第i(i=1)层上至多有2i-1个结点。2 深度为K(k=1)的二叉

28、树至多有2k -1个结点。3 对任何二叉树,若2度结点数为n2,则叶子数n=n2+1 深度为K(K=1)且有2k-1结点的二叉树为满二叉树,在第K层删去最右边连续J个结点,得到一棵深度为K的完全二叉树。 完全二叉树的性质:|_x|表达不大于X的最大整数。1 具有N个结点的完全二叉树的深度为|_log2n|+12 将一棵有n个结点的完全二叉树按层编号,则对任一编号为i的结点X有: 若i=1,则结点X是根,若i1,则X的双亲parent(X)的编号为|_i/2| 若2in,则结点X无左孩子(且无右孩子),否则,X的左孩子LCHILD(X)的编号为2i. 若2i+1n,则结点X无右孩子,否则,X的右

29、孩子RCHILD(X)的编号为2i+14.3 二叉树的存储结构 二叉树的链式存储结构: 二叉链表在做求双亲运算时效率不高,此时可采用三叉链表。 具有n个结点的二叉树中,一共有2n个指针域,其中只有n-1个用来指向结点的左右孩子,其余的n+1个指针域为NULL.P814.3.2二叉树的顺序存储结构 按层编号然后存储。 对于非完全二叉树,可采用增长虚结点的方式转化成完全二叉树再进行存储。虚结点在数组中用特殊记号表达。但同时会浪费存储空间。4.4. 二叉树的遍历 遍历一棵二叉树就是按某种顺序系统地“访问”二叉树上所有结点,使每个节点恰好被访问一次。 先根遍历:1 访问根结点 2 先根遍历左子树 3先

30、根遍历右子树 中根遍历:1中根遍历左子树 2 访问根结点 3中根遍历右子树 后根遍历:1后根遍历左子树 2后根遍历右子树 3访问根结点。4.6 树和林树的存储结构:P931 孩子链表达方法:头结点分为数据域和指针域,表结点分为孩子域和指针域 可以在头结点中增长双亲域,称为带双亲的孩子链表达方法。2 孩子兄弟链表达法:存储结点均含三个域:数据域,孩子域(存放指向本结点第一个孩子的指针),兄弟域(存放指向本结点下一个兄弟的指针)。3 双亲表达法:数据域,指针域(指示本结点的双亲所在的存储结点)将指针域定义为高级语言中的指针类型的链式存储结构成为“动态链表”,相应的指针成为动态指针。将指针域定义为整

31、形,子界型的链式存储结构成为静态链表,相应的指针称为静态指针。动态链表的结构通过库函数malloc(size)动态生成,无需事先规定表的容量。而静态链表容量须事先说明。4.6.2树的遍历 1 先根遍历:若树非空1 访问根结点 2依次先根遍历根的各个子树 2 后根遍历: 1 依次后根遍历根的各个子树2 访问根结点 3 层次遍历: 2 访问根结点 2从左到右,从上到下依次访问每层。二叉树与树,林的关系 P97 将二叉树的二叉链表和数的孩子兄弟链表的左孩子指针,右孩子指针和孩子指针,兄弟指针相应起来。 与树相应的二叉树的右子树一定为空。鉴定树和哈夫曼树 用于描述分类过程的二叉树称为鉴定树。鉴定树的每

32、个非终端结点包含一个条件,因而相应于一次比较火判断,每个终端结点包含一个种类标记,相应于一种分类结果。 哈夫曼树: 给定一组值p1pK,如何构造一棵有k个叶子且分别以这些值为权的鉴定树,使得其平均比较次数最小。满足上述条件的鉴定树称为哈夫曼树。第五章 图图中的小圆圈称为顶点,连线称为边,连线附带的数值称为边的权。任何两点间相关联的无向图称为无向完全图,一个N个顶点的完全无向图的边数为n(n-1)/2.任何两顶点间都有弧的有向图称为有向完全图。一个N个顶点的有向完全图弧数位n(n-1)每条边或弧都带权的图称为带权图或网。一个连通图的生成树,是具有该连通图的所有顶点的一个极小联通子图。若连通图的顶

33、点个数位N,则生成树的边数为N-1,假如它的一个子图的边数大于N-1,则其中一定有环,假如小于,则一定不连通。5.2 图的存储结构 邻接矩阵 对于无向图,顶点VI的度是矩阵中第I行(或列)的元素之和。 对于有向图,行元素之和为出度,列元素之和为入度。邻接表 为每个顶点建立一个单链表,单链表中每个结点称为表结点,涉及两个域,邻接点域,用以存放与VI相邻接的顶点序号,链域,用以指向同VI邻接的下一个的顶点。 此外,每个单链表设一个表头结点。每个表头结点有两个域,一个存放顶点VI的信息,另一个指向邻接表中的第一个结点。 若一个无向图有N个顶点,E条变,则它的邻接表需要N个头结点和2E个表结点,所以在

34、边稀疏的情况下,用邻接表比邻接矩阵更节省存储空间。对于无向图,第I个单链表中的结点个数即为VI的度。对于有向图,第I个单链表中的结点个数只是VI的出度,为求入度,必须遍历整个邻接表,所有单链表中,邻接点域的值为I的结点个数即为入度。 有时为了方便 的求入度,可以建立逆邻接表。5.3 图的遍历从图中某一顶点出发访遍图中其余顶点,每个顶点仅访问一次,叫做图的遍历。增设visitedn数组。初值为0,vi被访问后,置为1遍历方法:深度优先搜索和广度优先搜索。最小生成树问题拓扑排序第六章 查找表 集合的特点:在集合这种逻辑结构中,任何结点间都不存在逻辑关系。用来标记数据元素的数据项称为关键字,简称键,

35、该数据项的值称为键值。静态查找表:以集合为逻辑结构,涉及三种基本运算1 建表 CREATE(ST) 加工型运算,生成一个由用户给定的若干数据元素组成的静态查找表ST.2 查找 SEARCH(ST,K)引用型运算,若ST中存在键值等于K,结果为该键在ST中的位置,否则为一特殊标志3 读表元GET(ST,pos)引用型运算,结果是pos位置上的数据元素。动态查找表:涉及查找,读表元(同上)和以下三种基本运算。1 插入INSERT(ST,K)加工型运算,若ST中不存在键值等于K的数据元素,则将一个键值等于K的数据元素插入到ST中。2 删除DELETE(ST,K)加工型运算,删除ST中键值等于K的数据元素。3 初始化INITIATE(ST)加工型运算,设立一个空 的动态查找表。62 静态查找表的实现 6.2.1顺序表上的查找 顺序查找法:从表的第n个位置开始,从后往前依次将各个位置上的数据元素的键值与给定值K比较。若相等,回送该位置作为结果。若不等,查找不成功。 在第0个单元设立哨岗,所有当查找不成功时,查找了n+1次。 平均查找长度ASL=(N+1)/2 6.2.2有序表的查找 二分查找法 当N较大时,ASL约等于log2(n+1) -1 6,2,3 索引顺序表上的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁