数据结构课程知识点梳理汇总.docx
《数据结构课程知识点梳理汇总.docx》由会员分享,可在线阅读,更多相关《数据结构课程知识点梳理汇总.docx(26页珍藏版)》请在课桌文档上搜索。
1、数据结构第一章:绪论1.概念:数据:所有能被计算机输入并且识别处理的符号的集合(数值性+非数值-视频,声音,图用数据元素:数据的基本单位.也叫记录数据项:数据的最小单位.EG-学生记录是数据元素,姓名,学号,性别是数据项.数据对象:具有相同性质的数据元素的集合.例如整数集合.*性质相同:具有相同类型和数量的数据项.数据类型:值+操作,三种:原子类型,结构类型抽象数据类型(ADT)ADT-抽象数据类型:抽象,与具体如何在计算机表示无关,用(数据对象,数据关系,基本操作集)定义.包括数行嗨关系,基本操作.*数据类型VS抽象数据类型:前者表示值+操作,例如c中整形,通常有厂家提供的已经实现的数据结构
2、,而后者表示数学模型+操作,仅仅取决于逻辑特性,于具体的实嬲7表示无关,只要其数学特性不变就不影响使用.-联系:本质相同,但是后者不局限于已经实现了的数据类型,还包括用户自定义的数据类型.一作用:ADT对用户透明(提供接口),而不必了解实现细节.数据结构:具有一种或多种特定关系的数据元素的集合.包括三方面:逻辑结构,存储结构,数据运算.(算法的设计取决于逻辑结构,而算法的实现依赖于存储结构.)* 数据逻辑结构,数据元素,数据项在计算机中的映像为:存储结构,结点,数据域.* *数据运算=对数据定义的一组操作,定义在逻辑结构,实现依赖于存储结构.* -若逻辑结构相同,存储结构不同-数据结构不同*
3、-若逻辑结构相同&存储结构相同,但是运算不同-数据结构不同:EG:睇以物都相同,但是由于其运薪金不同称为不同的数据结构.-若逻辑结构相同,运算相同,存储结构不同-数据结构运算效率不同.数据结构评价准则:1.是否刻画了问题的基本特征.2.是否容易实现.选择数据结构考虑的因素:(存储时间量和空间量):-A:TB:SA:包括:输入数据总量;编译时间;取指令执行时间;重复执行的次数.数据结构基本操作於力翻实现应用程序与存储程序的独立.数据结构研究内容:在非数值计算程序设计问题中,研究计算机的操您对家操作对象之间的走熬及其操作的学科.数据类型VS数据结构:前者可以看成是已经实现了的数据结构.并非所有数据
4、结构都具有插入,删除,查找三种运算,如栈和队列不具备查找.数据结构三要素:A:逻辑结构:线性+非线性:线性结构(一对一):一般线性表+受限线性表(栈,队列)+推广线性表(数组,广义表)或者栈,队列,串,线性表)非线性结构:集合+树形结构(一般树,二叉树)(一对多)+图形结构(有向图,无向图)(多对多)更具体的分类:线性结构,集合树,图/网状结构.B:存储结构(物理结构):数据元素的表示和关系的表示:(内存)顺序存储:优点:随机存取缺点:只能整块存储,外部碎片链式存储:优点:无碎片缺点:只能顺序存取,每个元素占用额外空间.索引存储:优点检索速度快缺点:索引表占用较多存储空间,修改索引表耗时.散列
5、存储:优点:检索,删除增加节点速度快.缺点:可能出现元素存储单元冲突,解决冲突增加开销.C:数据运算.逻辑结构vs存储结构:前者独立于后者,一种逻辑结构可以用多种存储结构.逻辑结构表示逻辑关系-数据元素的关联方式/辘关奏,存储结构是逻辑结构在计算机中的表示.数据结构研究的内容涉及三方面:1.数据如何组织2.数据如何存储3.数据的运算如何实现.2.算法:程序设计=算法+数据结构算法是对特定问题求解步骤的描述,计算机中是指令的有限序列,其中的指令表示一个/多个操作.算法具有以下5大特性:有穷性(在实际可接受时间内执行完成),确定性(没有歧义),可行性(可以通过已经实现的基本运算执行),输入(O-N
6、),输出(I-N).*算法满足有穷性,但是程序不一定满足(如OS监控程序),算法可以用计算机程序描述,但是不是说所有算法都必须用程序描述.*:算法设计输入参数设置为非引用型形参,输出参数设置为引用型形参.好的算法目标:正确性:正确的解决问题(对于非法输入能够满足规格说明的输出)可读性:容易理解健壮性:非法数据,合法反应效率&低存储量(花小钱,办大事)效率度量:时间复杂度:事前估计:频度:一个语句在算法中重复执行的次数,T(n)=Pindu.时间复杂度:T(N)的数量级=算法基本运算(最深层循环内的语句的频度)T(N)=O(f(n)影响因素:A:问题规模NB彳寺输入元素性质通常考虑最坏时间复杂度
7、.空间复杂度:算法耗费的内存空间Sn=O(g(n).算法所需解磔量占用的内存空间.原地工作:算法所需辅助空间是常量,OQ)计算方法:递归算法:由算法推出励飒懑闻求解.影响一个算法的时间效率主要因素:事先估计运行时间考虑因素:A:问题规模-待解决问题的数量B:算法执行的基本操作次数.算法VS存储结构:富病即雌网上好的存储结构可以提高算法效率.求解问题的步骤:建立ADT(运算描述)一设计合理的存储结构(运算实现)一设计算法数据运算与采用何种存储结构相关,算数/赋值/关系运算三类.算法的比较:两个算法上俄一般是采用平均时间复杂度,而一个算法分析通常采用孱妤时间复杂度.第二章:线性表1 .线性表:定义
8、:n个相同数据类型的数据元素的有限序列.可以为空.特点:线性性质:除了al,每个都有唯一的直接前驱,除了an,每个都有唯一的直接后驱.性质:个数有限,每一个元素占用空间相同,各元素排序有先后.线性表长度VS数组长度:前者是元素个数,后者是预先分配的存放线性表的存储空间的长度.前者小于等于后者.线性表VS一维数组:前者要求所有元素连续存储,后者不必.前者有就IW操作,后者为留行故元素.有序表:有一定Jl质序的线性表.2 .顺序表:线性表的顺序存储:采用数组存放元素C=ZPi(Ci)基本操作:插入操作(i=(1.n+1)平均移动n/2删除操作(i=(1.n)-平均移动(nl)2按值查找(i=(1.
9、n)平均比较次数(n+1)/23 ,顺序存储vs链式存储优缺点:顺序:存储密度大,内部物理地址相邻Iiiiiiiiiiiiiiiiiiiiiiiiiii储指针Iiiiiiiiiiiiiiiiiiiiiiiii储区域.存储空间秘邮筑随机读取或Jl质序读取适合于静态操作插入,删除移动将近一半元素一般用数组存储,实现容易可以折半查找-分配方式:静态:预先分配空间大小难以确定.动态:需要移动大量元素.查找才由入,删除T(N):链式:历解点物理地址不一定嬲无碎片现象,但是需要存储空间来存每个结点内占用一片用维存存储空间秘碑濠只能顺序读取适合动态如:删除元素,移动元素等动态操作方便运用于各种逻辑结构的存储
10、表示需要指针支持指针不可折半查找.分配灵活,高效.按值:无序-T=O(N)T=O(N)有序-T=0(1.0G2N)(折半查找)按序号:T=OQ)插入移动(ai-an=n-i+l个)i属于土刀删除移动(ai+l-an=n-i个)i属于。,用一比较:顺序访问所有结点:O(N)O(N)4 .为什么引入链式存储?-在插入删除操作以提高效率.5 .单链表;用头指针1.标识一个单链表,空表:1.=NU1.1.有头结点-头指针就等于-用头绿能循铲标说单链表,无头结点-用首结点指针标识.删除P结点后继结点T=O;判空(有头结点:1.TneXt=NU1.1.)头结点-目的:为了操作和运算上的方便头结点:数据域可
11、有可无,指针域-指向第一个元素结点.空表头结点指针域=NU1.1.头结点VS头指针:不管带不带头结点,头指针都是指向表中第一个结点,头结点是带头结点链表中的第一个结点.头结点优点:A:使得链表任何节点都有前驱结点,就礴A操作方猿和表其他位置操作一致;遍历:必须从头结点开始才能遍历整个表.B:无论链表是否空,头指针都是指向头结点的非空指针.如果含头结点任何插入都不合圜快结点指针的值6 .单链表:操作:1.头指针,s新的结点:(二表示赋值尸二表示判定)建立+查找+插入+删除:头插法(逆序H=O(N)代码:s-data=x;snext=lnext;lneXt=S 尾插法(增加一个尾指针r):T=O(
12、N)代码:S-data=x;rnext=s;r=s(r指针指向$即r指向新的表尾结点) 按序号直找:找到第i个结点为止:(含头结点XT=O(N)代码:1.nOde*p=1.-next初始化P指针;While(P&jvi)P=PTnext;j+Returnp;按值查找:T=C)(N)带头节点:代码:1.nOde*p=1.-next初始化P指针;While(P!=Null&pdata!=e)P=PTneXtretuenp; 插入操作:有P结点,节点b插入s结点.T=O(N)一将X插入第i个位置.代码:P=GETE1.EM(1.,i-l)找到第i个结点的前驱结点;STneXt=PTnext;pnex
13、t=s;注意:语句不可颠倒,试着自行分析.君姆S侬自m 删除结点:在p,q节点,节点c删除q节点T=O(N)-删除第i个结点.代码:P=GETE1.EM(1.,i-l)找到第i-1个结点的位置;PTneXt=q-nexree(q);求表长度:表的长度不将兴绿点-对于含头结点和不含头结点算法不同.7.双链表:插入删除结点算法T=C)(I)一为什么?-目比使德司以双向遍历,快速访问已知结点前后结点.-两个指针:PriOr,next与单链表区别:只是增加了一个Prior指针.双链表在插入删除过程中需要修改prior指针,关键在于:修改过程中不断链.与单链表相比,存储密度小.便于找到前驱,后继结点.A
14、:操作:在指定结点后进行操作: 插入:在P所指结点(结点*p)和结点C之间插入结点*s.T=O代码:snext=pnext;Pnextprior=s;S-Prior=p;pneXt=S关镇:.第一句第二句必须在第四句之前,试分析为什么?(否则:STneXt=S,s-prior=公 删除删除结点*p的后继结点*q:T=OQ)代E马:PTneXt=qnext;qnext-PriOr=p;nee(可以交换顺序)8彳盾环单链表:尾结点*r的next域指向1.一与单链表区别:表中最后一个节点指针域不是NU1.1.,而是揭娱结点一特点:表中无NU1.1.节点;判空条件(有头结点):买结点励韵溟百等型指针-
15、设尾指针:对于表头,尾操作T=O(I).一不带头节点判空:1.=NU1.1.;尾结点:PTneXt=1.-从表中任意节点都可以遍历整个链表.9 .循环双链表:区别:头结点的Prior指针指向表尾.-判别条件:尾结点*p-p11ext=1.;空袭头结点的PriMneXt均等于1.(1.next=1.-prior=1.)10 .静态链表:一借助数组描述线性表的链式存储结构.一与链表区别:指针是结点的相对地址(数组下标)一作用:适用于没有指针的高级语言中.-特点插入删除同动态链表,只需改指针,不用移动元素.无嬲苴的瘫难以确定表长.11 .表的合并算法:n,m长度的有序表利用二朝琥法合成一个有序表,T
16、=5h)11V.12 .总结:各种表操作T荟萃:T=O(X)顺序表:操作在于承勃元素链式结构:操作在于艇!J第i;个结点的修顺序:红色为修正参考答案.顺序表,带头结点单链表,带头结点循环单链表,不带头结点只有尾指针循环单链表,带头结点双链表,带头结点循环双链表.A:查找第i个元素(i=Q,n):X=1.N,N,N,N,N.C:插入新兀素作为第一个兀素:X=N,1.1.1.1.1E:插入第i个元素:(i=(2,n):X=I(N),N,N,N,N,N.G:删除最后一个元素:X=1.N,N,N,N,1B:查找第一个值为X的元素:X=N,N,N,N,N,N.D:插入新元素作为最后一个元素:X=IzNz
17、NzIzNzIF:删除第一个元素:X=I(N),1.1.1.1.lH:删除第i个元素:(i=(2,n)X=I(N)lNzNzNzNzN.13 .注意事项:时间复杂度:插入操作主要是查找丽茂点删除操作主要是再找两节点&修改指针域.Ji质序表和链表访彻旗续扁B是:r=o仞15.在双链表删除一个结点(非尾结点)需要修改2个指针域日亩入则需要4个指针域.16时间复杂度:Cn(from2n)n!.分析最不适合的存储结构唯一的方法:时间复杂度.17根据指针的连接方式,链表分为:静态链表,(动态)链表.栈,队列栈1.栈:只允许在一端进行插入删除操作的线性表.一概念阚先用麟的一勰栈底:固定的另一端.一特点后来
18、居上后进先出(1.IFo).一基本操作:POP(出栈),Push(压栈),GETT0P(获取栈顶元素)- 栈的插入-压樗栈的删除一嫂- -应用实例撤销功能-例如Word,excel,网页浏览器.- 理解:A:是一个线性表,元素有前驱后继关系.B:最先进栈的不一定只能最后出栈-元素的糊悯谢敏但是必须是浅质元素出栈.2植的存储结构:- 顺序存储:用数组存储元素,链栈:规定:为头续点所有操作在同成必须附设一个栈顶指针(默认指向元素际0位置.单链表头进行.A:栈空:top=-l;一个元素:top=。优点:便于多栈共享空间提高效率.B栈顶指针:S.top,栈顶元素:SdataStop.c初始化:top=
19、r-表示指针指向栈顶元素.进栈操作:若栈不满TT指针加一-一然后入值.1.链栈选择:最好:带头结点单链表带头结点双链表VS不头循环单链表.-选择:带头单.-先声明变量开拓空间,后赋值.出栈:获取栈顶元素-栈顶指针减一.D7=0a-判别条件:删除是否栈空?,读栈顶.插入-是否栈满?进栈代码:ifSztop=Maxsize-1.returnerror;S.top+;1.判空:t。P=NUIl5如匕51:=0.(或者5如匕+5上=6.2.入栈:进入一个m结点值为I:出栈代码:-m.data=I;mnext=S.top;ifs.top=-lzreturnerror;x=S.dataS.top;Stop
20、.S.top=mtop指向m;Scount+.(或者合并为:x=S.dataStop-D占.wE:几种栈顶指针变化:(想象栈底有一空元素被栈顶指针指向).count.3.出栈:变量X存放要删除的结x=S.dataS.top;k=S.top;S.top=S.topnext;free(k);S-两大Jl质序/链栈对比:顺序栈:链栈:1.要事先确定空间.1.灵活1栈空:topl=-l,2栈空top2=Maxsi乙2.存取定位方便.2.额外开若初始化栈顶指针为top=-1.指针指向栈顶,4.T=0Q)以上操作.如果初始化top=0,表指针指向栈顶下一个元褰相应的操作也要变化.F:共享栈:要求:两个相同
21、数据类型的栈,&并且需求呈现相反的关系.两端栈底.数组下标范围:0-MaXSiZe-1.销栈满:top2=topl+1.(两个指针相邻时)3.不会栈满操作:进栈:topi指针加一,进栈,-元素变化大-链栈,反之顺序栈.top2指针减一,进栈.一算法关键判断是对栈1还是栈2进行操作.3.顺序栈的实现:用数组data0,Max-1,0作为栈底,Max-I作为栈顶,也可以反之,,旦建注意不能将中间位置作为栈底或栈顶.4栈的作用&应用:-栈的作用:为什么有了顺序表和链表还要栈呢?一术业有专攻,栈可以使我们更专注于入栈,出栈的操作,不必过多关心与实际问题无关的例如数组下标增减的问题,不必考虑过多无关细节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 知识点 梳理 汇总
链接地址:https://www.desk33.com/p-1416262.html