版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪 ( Data-以链式结构:在每一个数据元素中增加一个存放地址的指针(),例在C语言中3,-2,-1,0,1,2,3,…} 正确性(Correctness 是指执行算法所需要的计算工作量,是由算法执行的基本运算次数来度1.O(1)2.O(n)3.常数阶线性阶平方阶【练习】数据结构中,与所使用的计算机无关的是数据的结构CA.线性列。其中数据元素的个数n定义为表的长度。当n=0时称为空表,常常将非空的线性表ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以例 例学生基本信息表如下:男女女女男例一副的点后继a2;ai+1数据的运算是定义在逻辑结构上的,而运算的具体实现则是在结构上进行初始条件:线性表L已存在。操作结果:返回L⑶定位:线性表的第i个元素线性表的顺序结作为数据元素的位置。则线性表中第i+1个数据元素的位置LOC(ai+1)和第i个数据元素的位置LOC(ai)之间满足下列关系:LOC(ai+1)=LOC(a因为除了用数组来线性表的元外,顺序表还应该用一个变量来表示线性表的在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,应为字符型;学号可为整型或字符型;应为整型;应为字符型;成绩“结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一struct{成员表 /*类型说明符成员名struct{int floatscore;STUstruct{intcharname[20]; floatscore;struct{ /*类型说明符成员名#define typedefintDataType;/*类型别名typedefDataTypedata[ListSize];/*元素*/ length;/*长度*/}则表中第i个元素是L.data[i-1]。表变成长度为n+1的线性表表长加1点.为避免大量结点的移动,可以采用线性表的另一种方式,链式结构,简称为链表(LinkedList)。(甲,乙,丙,丁,戊,己,庚)的链式表示如果为NULL,表示为空循环链表的特点结点,整个链表形成两个环。【练习】下面关于线性表的叙述中,错误的是哪一个?【练习】若长度为n的线性表采用顺序结构,在其第i个位置插入一个新元素的算法的时间复杂度为( 栈和队(LIFO栈栈的顺序结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实表的类型定义中的长度属性改为top即可。只需将顺序表的类型定义中的长度属性改为top即可。顺序栈的类型定义如下:#defineStackSize100typedefchardatatype;typedefstruct{datatypedata[stacksize];inttop;设S是SeqStack类型的指针变量。若栈底位置在向量的,即s–>data[0]是栈底元素,那么栈顶指针s–>top是正向增加的,即进栈时需将s–>top加1,退栈s–>top1。因此,s–>top<0s–>top=stacksize-1常见栈操作voidinitstack(seqstack{}intstackempty(seqstack{}int {}voidpush(seqstack*s,datatype{if}datatypepop(seqstack{error(“stackunderflow”);}Datatypestacktop(seqstack{error(“stackisreturn}typedefstacknode{datatypedata;structstacknode*next;列栈操作IIOIOIIOOO之后,得到的输出序列为(AABCD另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾因此队列亦称作先进先出(FirstInFirstOut)的线性表,简称FIFO表。a1,a2,…ana1是队头元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,…an,也就是在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当front=rearrear-队列的链式结构简称为链队列,它是限制仅在头删除和表入的单链LinkQeetypedefstructqueuenode{datatypestructqueuenodetypedefqueuenode*front;queuenode*rear;列栈操作IIOIOIIOOO之后,得到的输出序列为(AABCD栈和队列的共同特点是(A)。串S=“a1a2a3…anS是串名,双引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或或多个空格组成的串称为空白串(BlankString)长度为0的空串。子串在主串中的序号(或位置。例如,设A和B分别为A=“Thisisastring”位置是3。因此,称B在A中的序号(或位置)为3C语言实现charchars3[30],*p;intresult;intstrlen(chars);//求串的长度串char*strcpy(charto,char charstrcat(charto,charstrcat(s3,s2);intstrcmp(chars1,chars1<s2\s1=s2 result=strcmp(“Joe”,”Joseph”);result<0charstrchr(chars,char返回NULL。p=strchr(s2,”.”);//p指向“file”之后的位置if(p)strcpy(p,”.cpp”); 定长顺序表示,也称为静态分配的顺序表。它是用一组连续的单元来存放串中的字符序列。所谓定长顺序结构,是直接使用定长的字符数组来定义,#definemaxstrlentypedefcharsstring //s是一个可容纳255个字符的顺序串。如,C‵\0′表示串值的终结。255个字符的原因,因为必须留一个字节来存放‵\0′字符。typedefstructcharstructnode数typedefelemtypetypedefelemtypetypedefarray1array2[m];为了节省空间,可以对这类矩阵进行压缩:即为多个相同的非零元素只分 A为对称矩阵。1513750800a18926 an-10an-11an-12…an-1n-2、三角矩阵3、稀疏矩阵的总数(s≦m×nA为稀疏矩阵。常认为e≦0.05时称之为稀疏矩阵。#definemaxsize10000typedefintdatatype;typedefstruct{inti,j;datatypeijv1213931-36 -‘ftr 【练习】串的长度是指 【练习A中,每个元素的长度为3下标i18,列下j1始地址为C。【练习】对稀疏矩阵进行压缩目的是(树和二叉家上图中的结点数=13;树的度=3;树的深度性质1性质3性质5:在完全二叉树中编号为i的结点号为2i+1即用一连续单叉树数据素。此,必把二树的所结点排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关#definemax-tree-sizeTypedefemtypesqbitree[max-tree-Sqbitree2.二叉树的链 TypedefstructBiTNodeemTypestructBiTNode}先序遍历(TLR)中序遍历(LTR)后序遍历(LRT)longfact(long{if(n==0||n==1)return1;elsereturnn*fact(n-}返回1TREENODE*creat_tree(){TREENODEcharc;if(c==‘#’) t–>data=c;tt–>rchild=create–tree();}}#defineNULL0Typedefstructnode{ chardata;structnodeTREENODE*root;//定义根节点TREENODE*creat_tree(Voidinorder(TREENODE*);Voidinorder(TREENODE {{inorder(p–>lchild);}}【练习】树最适合用来表示C。 B. 图有序对,表示v和w之间的一条边,则该图称为无向图。且VR’是VR的子集,则称G’为G的子图。(v,v(v,v ③ 顶点v的度称v的出度,记为OD(v)。顶点v路径其中(vij-1,vij)∈E≤m在无向图GVV’VV’若图中任意两个顶点vi、vj∈V,vi和vj都是连通的,则称G是连通图。棵树的n-1条边。ADTGraphVR={<v,w>|v,w∈V且P(v,w),<v,w>弧<v,w>的意义或信息}}ADTCreateGraph(&G,V,VR);//按V和VR的定义构造图G //销毁图GLocateVex(GuGu,则返回该顶点在图中位置;否则返回其它GetVex(G, //返回vPutVex(&G,v, vFirstAdjVex(G,v);vvGNextAdjVex(G,v,w);vwwvInsertVex(&G,v);//在图GvDeleteVex(&G,v);GvDFSTraverse(G,v,BFSTraverse(G,v,图的数组(邻接矩阵)表有向图的十字链表表图的数组(邻接矩阵)表假设图中顶点数为n,则邻接矩阵An×n:1ViVj0反之= =ViVj 发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被到;从图中某个顶点V0出发,并在此顶点后依次V0的所有未被过的邻接重复上述过程,直至图中所有顶点都被到为止。连通分量的顶点集:即从该连通分量的某一顶点出发进行搜索所得到的顶点序设E(G)为连通子图G中所有边的集合,则从图中任一顶点出发遍历图时,必定将显然,T(G)GG7.1(f,ca(查给定一个值k,在含有n个结点的表(或文件)中找出关键字等于给定值k的结平均查找长度(AverageSearch查找算法在查找成功时的平均查找长度(ASL。Pi:i查找过程KK较,直到找到关键字等于K的记录或到达表的另一端。typedef key;……intseqsearch(SSTableST[],intn,intkey){inti=n;while(ST[i].key!=key)&&(i>=1)i--;returni;}ASL=(1+2+3+4+……+n)/n=(n+1)/2 ASL=(n(n+1))/n=n+1 ASL==(①+②)/2=首先将待查找的k值和有序表R[0]到R[n-1]的中间位置mid上的结点的关键R[mid].key>k,则说明待查找的结点到关键字为k的结点。K=17K=12012查找 mid=(1+10)/2=intSearch_Bin(SSTableST[],intn,int{intlow,high,mid;low=1;high=n; if(ST[mid].key==key)returnmid;if(key<ST[mid].key)high=mid-1;elselow=mid+1;}return}插入关键字等于key的记录。衡二叉树等。树结构有B-树、B+树等。二叉排序树(BinarySortstructBtreeNode{ElemTypekey;//关键字}BtreeNode,BiTreeSearchBST(BiTreeT,KeyType{if((T==NULL)||(key==T->key)) if(key<T-平均搜索长度为(A)的值除以9。D、提示:对各个位置查找的次数:323413234排{R,R,…R{K1,K,…Kn定一种排列P(1),P(2)…P(n)使其相应的关键字满足递增(或递减)关系:KP(1)≤KP(2)≤…KP(n)使上述文件成为一个按其关键字线性有序的文件{RP(1),RP(2),…RP(n归并类(二路归并排序、多路归并排序冒泡排O(n2)插入排O(n2)选择排序堆排序O(nlogn)希尔排序O(n1.25)基数排序O(n)#defineMAXSIZE20//一个顺序表的最大长度typedefintKeyType;//定义关键字为整数类型typedefstruct{KeyTypekey;//关键字项InfoTypeotherinfo;//其他数据项}RedType;//记录类型typedefstruct{RedTyper[MAXSIZE+1];//r[0]闲置或用作哨兵单元intlength;//顺序表长度直接插入排序变为L.r[1..i]。将L.r[i]到L.r[j]的位置上直接插入排序示例(插入操作要进行n-1次voidInsertionSort(SqList&Lfor(i=2;i<=L.length;++i){L.r[0]=L.r[i];//为监视for(j=i-1;L.r[0].keyL.r[j].key;jL.r[j+1]=L.r[j];//记录后移L.r[j+1]L.r[0} 杂度为O(n2)。基本思想考虑到L.r[1..i-1]是按关键字有序的有序序列,则可以利用折半查找实现voidBinsertSort(SqList{inti,low,high,mid;for(i=2;i<=L.length;++i) low=1;high=i-{if(L.r[0].key<L.r[mid].ke
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版建筑工程施工监理单位招标投标合同书3篇
- 二零二五版古籍文献储藏室修复合同3篇
- 二零二五年度高品质腻子施工服务供应合同2篇
- 二零二五版导游人员旅游安全责任合同3篇
- 小区车子棚施工合同(2篇)
- 2025年度新能源项目财务监督出纳人员担保合同2篇
- 二零二五版车位购置及租赁合同样本12篇
- 2025年度欠条收藏:古董字画修复与交易合同3篇
- 二零二五年度高新技术项目研发团队聘用合同范本3篇
- 二零二五年餐饮服务人员劳动合同样本12篇
- HG∕T 2058.1-2016 搪玻璃温度计套
- 九宫数独200题(附答案全)
- 泌尿科一科一品汇报课件
- 人员密集场所消防安全管理培训
- 白铜锡电镀工艺
- 拜耳法氧化铝生产工艺
- 2024年南京信息职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 部编版二年级下册道德与法治第二单元《我们好好玩》全部教案
- 幼儿园利剑护蕾专项行动工作方案总结与展望
- 合同信息管理方案模板范文
- 2024年大唐云南发电有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论