试谈数据结构_第1页
试谈数据结构_第2页
试谈数据结构_第3页
试谈数据结构_第4页
试谈数据结构_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构研究什么数据处理中数据之间的逻辑关系、数据在计算机中的存储方式和在这种“结构”上能进行的操作(运算)。如何表示数据,如何存储数据,如何对数据进行处理3种逻辑结构线性结构树形结构(图结构线性结构的性质和概念性质:全序性:线性结构的全部结点两两都可以比较前后关系。单索性:除头结点外,每个结点有唯一的直接前驱结点;除尾结点外,每个结点有唯一的直接后继结点。概念:直接前驱、直接后继结点:前后相邻的结点;前驱、后继结点:前面、后面的结点。在不混淆的前提下,直接前驱和直接后继可简称为前驱和后继。树结构的性质和概念性质和概念:根结点:“树的根”,一棵树只有唯一的一个根结点。叶子结点:“树的叶子”,一棵树有很多叶子。除根结点外,每个结点有唯一的父结点;除叶子结点外,每个结点允许有多个子结点。磨父亲结点个,罢子女结点暗,各兄弟结点灿,协祖先结点爪,原子孙结点姓。站树结构是一香棵采“锯倒立的树杆”睛。就4种存储结阁构炼顺序结构的翠优缺点峰用一块凡连续的俯、学无间隙的慌存储空间按阵顺序存储各秃结点。叉各结点地址渴计算方法(聋问题1界):尘结点i的地术址=起限始地址+女i连×信每个结点所民占存储空间闹大小俗各结点之间封逻辑关系表吵示(净问题2膝):地址相宵邻关系就表筑达了结点之激间的逻辑关效系。镇顺序存储结争构是在内存福中开辟一个剂连续的空间栽用来存储数岛据,因此对狭于内存的需脂求和苛刻,谋必须是连续杜的空间.在弊数据查找(贩特别是不按挺照规律排列外的数据),炼时间复杂度模教少.效率纠高.动链式结构的省优缺点骄链式存储结景构是采取连位表指针来指乞示数据的存莫储位置,这液就可以是在踪内存中随意弊的存储,没妖有必须连续椒储存空间的鸣要求,对于穴内存的要求埋相对教容易使.但是要是子是从小到大睬顺序排列的济数据,链式挺存储结构的神时间复杂度际教小,效率掏高.但是要茫是不规则排走布的数据一星般时间复杂尖度较高,效斧率更低桃算法渐进复可杂度的表示碌方法触算法时间复房杂度的坏渐进分析而:在时间复喉杂度t(n侄)中,急剔除不会从毛实质上改变雾函数数量级考的项见,经过这样厚处理得到的雀函数是t(成n)的近似租效率值,但锤这个近似值检与原函数已虹经足够接近傍,当问题规毕模很大时尤怖其如此。这东种效率的度辅量就称为剖算法的渐进明复杂度户。(在不引朴起混淆的情僚况下,也可万简称贱时间复杂度叠)染算法的最好稿、最坏和平杜均时间复杂牌度惠算法的复杂诵度往往取决钻于输入数据后,例如一个隶排序算法灯的时间复杂金度往往取决驴于立输入数据的僚原始有序程堡度胜。因此分析劳算法复杂度号时往往要区袋分梁最好情况将、县最坏情况付和碰平均情况风。判例如,在一艰个包含n个壳元素的数组钉中查找某个谎数据(怜假定该数据颜是数组元素笋):阁最好情况尸:该数据就拳是第0个元翠素,只需比蒜较1次就可缝以结束了,毙其复杂度为羊O(1)。检最坏情况剃:该数据是效数组最后一长个元素,则拣需要比较n笨次,其复杂污度为O(n新)。首评均情况宾:假设需要制查找的数据袍是第0个元伏素、第1个古元素、缠…截、最后一个今元素的概率景相等,则平没均需要查找姜的次数为:低1钩×娱1/n+滥2驼×惜1/n+怖徒…浙+n览×杜1/n=尊(n+1艇)/2。其雪复杂度为O挤(n)。腿基本的算法凝复杂度类型珍线性表、顺赞序表、链表淡、栈和队列劳的基本概念倾线性表是一烈类盯线性车(区别于安树型结构锹和泄图结构登)数据结构边,它有多种扰存储结构和寻应用方法,挑从而可以细灶分为慧顺序表甜、文链表眠、郑队列娃、纯栈悠等。略“衣线性表影”砌是从栋逻辑结构土的角度来描羊述数据结构馆的,它主要展有两种存储谱结构:载顺序存储结砌构舌和宫链式存储结依构逼。考顺序表等(sequ别entia胡llis艘t)又称为舱向量徐(vect毅or),它范采用定长的渔一维数组存基储结构圾。如向量的虚主要特性忆:焦元素的类型采相同很。涛元素顺序地祸存储在一块军有连续地址伶的存储空间险中,每一个删元素按其顺搜序有唯一的响索引值,又夸称吨下标值夕,用它可以敲方便地访问敲元素内容。热STL提供惨了华3种通用实浙体伶:段容器刺、扑迭代器攻和劫算法解。营链表给(位linke院d路梯list困)的特点是云动态申请内拳存空间龙,并通过指顺针来链接结避点,按照线匹性表的债前驱/后继御关系屠把一个个结坏点链接起来盛。搂几种用于线岭性表的链式丙存储结构:单链表;双链表;晕循环单链表聋;粮循环双链表愿。涨链表存储是槽最常用的存欲储方式之一蜘,它神不仅可以用贯来表示线性产表博,舟而且也可以托用于其他非亿线性的数据勤结构中浆,如树结构愧和图结构。朋栈(仙stack踪)是一种袭限制访问端杏口硬的线性表,字常称为疫后进先出表衡(雷LIFO与-Last域In,营First亩Out)闻。若栈的一端称佣为功“告栈顶蚁”飘,钩表元素的插场入和删除均享限制在栈顶葛;表的另一锹端成为溉“特栈底于”帽。目表元素的插叨入退,成为午压栈特(浓push脂)。古表元素的删指除担,称为遭出栈凤(致pop刃)。估队列(璃queue秩)也属于类限制访问端够口纪的线性表。肉数据进入/芝取出的方式蜂为支先进先出表躲(FIFO奉-Firs祖tIn,狸Firs敞tOut球),因此队违列也称为录先进先出表欺。迟只允许从室队列尾愿(仗rear梅)优进入数据幕。蕉只允许从柱队列头口(棉front义)激取出数据船。烂顺序表的抽铜象数据类型计:插入元素棉//插入一胸个元素,使岛之成为第i捡ndex个岔元素建templ伍ate<株class烦ELEM责>沉void范Vecto甲r<ELE撇M>::i格nsert允(con千stEL型EM&i节tem,怀inti盟ndex辣){秀防asser香t(Si乐ze<Le庆ngth诞);a马ssert汇(ind层ex>=0统&&i缝ndex<适=Size死);缎钓for(寺inti绳=Size叙;i>i分ndex;裙i--灭)翁高//移动元手素狸吐败elmli净st[i]魔=el轰mlist凳[i-1]菊;坑偏elmli植st[in挂dex]辩=ite收m;艳语Size+已+;}惰顺序表的抽助象数据类型望:删除元素使templ育ate<筑class们ELEM金>屠void昆Vecto督r<ELE孔M>::r场emove也(int迷inde装x)少扒//删除第狮index织个元素{晓言asser干t(in蒸dex>=樱0&&筑index井<Size王);蚊皆for(总inti路=inde元x;i<察Size-鬼1;i+就+)搏障//移动元填素委监业elmli塌st[i]膛=el途mlist撑[i+1]再;浸详Size-荡-;}叔顺序表的优容缺点优点:疫直接存储元舅素参,每个元素敏不需要存储窃指针等其他硬信息宽。来直接访问元烫素,叛访问第k个疮元素的时间蛙为O(1)浑,与n无关仗。缺点:础插入新元素虑需要移动大迈量的元素盾,复杂度为签O(n)洒。镇删除元素也订需要移动大京量的元素毯,复杂度为报O(n)含。呆顺序表的孙缺点之一齐:禽插入新元素胳时需要移动伴大量的元素暖。挎设顺序表的让长度为吊n烈,在各个位狠置插入的概撞率相等,则凉插入算法平挖均需要移动妨n/2郊个元素。其梨复杂度为会O(n)追。序顺序表的蕉缺点之二罚:巧删除元素时惰需要移动大阵量的元素。经删除算法的叮复杂度也为术O(n)孔。吗单链表的理膨解柿在单链表中秀,广每个结点由竖两部分组成宾:辛存放结点数拆据的倍data域梨;阳存放指向后钢继结点的集next指左针域丢。阳因为内每个结点中维只有指向后笔继结点的指泛针容,因此由这狼种结点链接屠而成的链表旁,称为影单链表萍。鹿表首指针f毫irst建:指向单链旨表中第0个死结点(煌结点序号从鄙0开始计起吐)。脆单链表的抽篮象数据类型畜:释放所有吵结点置单链表的抽文象数据类型萝:插入结点优单链表的抽棍象数据类型送:删除结点堪单链表的优币缺点嚼双链表的理吵解垃双链表的抽姑象数据类型半:插入结点速(简单情形寇)距双链表的抽凶象数据类型献:删除结点责(简单情形幅)栈的理解队STL中的篮栈灯栈的应用1衔:十进制整窜数转换成二武进制毫栈的应用2训:括号匹配电顺序栈的理枕解笼顺序栈的抽院象数据类型歼:压栈晨顺序栈的抽醋象数据类型坡:出栈柄顺序栈的抽追象数据类型灰:取出栈顶寇结点聪顺序栈的抽肝象数据类型偷:判空吉链式栈的理吊解句链式栈的抽淘象数据类型日:释放所有驳结点胀链式栈的抽询象数据类型鲜:压栈涝链式栈的抽邻象数据类型监:出栈赌链式栈的抽毛象数据类型旋:取出栈顶狸结点纲链式栈的抽乌象数据类型眠:判空行顺序栈和链限式栈的比较映计算表达式欺的值:中缀睡表达式奸→蛋后缀表达式交(不要求记风忆算法执行俯过程)晚计算表达式螺的值:计算辱后缀表达式固的值队列的理解全STL中的尼队列岂队列的应用治:BFS的偷实现准顺序队列的岸理解摄顺序队列的宾抽象数据类泡型:入队列通顺序队列的拼抽象数据类暴型:出队列直顺序队列的梨抽象数据类熟型:取出队拖列头结点浅链式队列的慎理解植链式队列的裙抽象数据类泳型:入队列型链式队列的颗抽象数据类周型:出队列罪链式队列的昨抽象数据类肠型:取出队估列头结点千顺序队列和犬链式队列的坚比较慧第3章字弃符串律编号飞陶知识点著挪类型兔拣掌握程度起姿代码要求药3_01粥析字符串的模浮式匹配先包概念孤呆理解群竟字符串的模笼式匹配南:给定嫩目标字符串夜T(Tar店get)蛛和一个猛模板P(P向atter撑n)鲁,也是字符建串,在炼目标字符串伤T中查找与们模板完全相触同的子串蹄,返回T中践和P匹配的葛第一个子串拨(简称为槐配串壶)的首字符灯位置。京3_02窃御朴素的模式矛匹配算法休么算法桑咳掌握原理况猴代码段敞第0趟开始讽比较。在第叮0趟,将模睁板P的第0禽个字符对准埋T的第0卸个字符,将贸两字符串对紧应位置上的架字符一一比宗较,如果匹疫配成尚功则结束,秆否则(即匹伯配失败)将诊P右移一个申位置进入第史1趟比较,手…富。第s趟比点较是从T的于第s个字符誉和P的第0赛个字符开始伸比较。箭反复进行每吉一趟的比较启,直到出现风以下情况:要执行到某一扩趟,模板所别有字符与目厅标串中对应鞠的字符都相画等,餐匹配成功廊。声模式移动到纠最后可能与满T比较的位类置照,但还不能蚊匹配,则钻匹配失败烧。捏3_03矩哭KMP算法绘:模式串前绸缀函数值的确人工求解惯径算法单迅掌握原理析待3_04杂舰KMP算法舒:模式串前荣缀函数值的盲推导促尘算法斤榆掌握原理尚笋3_05些立KMP算法质:模式串前打缀函数值的涌求解液售算法蛙旨掌握原理善认代码段洋3_06爸敬KMP算法抚:实现趣扶算法粒腿掌握原理搬虚代码段喜第4章二堵叉树勾编号秒占知识点右趴类型汁耐掌握程度圆桌代码要求慎4_01卫功树与子树飘弄概念捆成理解港悟4_02钱汽二叉树的定枣义邮士概念览加理解浓观4_03炒吗二叉树的基疤本概念考饰概念怕照理解助耗4_04墓艺满二叉树阻配概念姥辛理解孕跨4_05寻蛾完全二叉树估活概念担敏理解雾俩4_06亦伴扩充二叉树非超概念扶届理解属醋4_07惭赔扩充二叉树屈的外部路径值长度和内部崖路径长度悦且计算妈羡掌握方法焦振4_08盼掉扩充二叉树尖的性质指锐性质撤软理解鹿浆4_09滴册二叉树性质言1(满二叉亭树定理)投嚼性质鞠扩理解沟包4_10伏福二叉树性质朝2(满二叉腊树定理推论星)揪尺性质半魂理解摄款4_11透塑二叉树性质迷3柏稳性质胞猎理解新蓝4_12纤谦二叉树性质械4戒铅性质辈被理解舱牢4_13逢主二叉树性质塑5企罚性质疤经理解尘变4_14饲点二叉树性质奉6葛帖性质倦直理解冰灯4_15个旨二叉树的二响叉链表实现爬燥原理骑可掌握趴然4_16猾乘二叉树的二绘叉链表实现泡:从二叉树莲根结点出发盒,查找指定绵结点的父结裳点俱胶算法北登掌握原理秋以代码段在4_17牧尿二叉树的二筋叉链表实现划:返回指定界结点左兄弟微你算法当弃掌握原理您求代码段虚4_18包括二叉树的二夹叉链表实现片:返回指定崇结点右兄弟伐纺算法手忆掌握原理则匆代码段好4_19悦谜二叉树的二精叉链表实现吨:删除二叉赖树的递归算渣法戴愈算法配弓掌握原理政工代码段骨4_20住散二叉树的遍瓦历具框概念社深理解友辈4_21探棵二叉树的前源序(中序、郑后序)遍历匆宫算法冤造掌握原理腔伤4_22毁俊前序(中序轻、后序)遍道历的递归实吩现像盟算法循贞掌握原理莲倡代码段拘4_23泳棵前序遍历的柏非递归实现宗治算法闲慌掌握原理庙府代码段细4_24催转三叉链表愿炎原理借将掌握项录4_25稳催完全二叉树俯的数组实现长德性质串研理解膝晨4_26删走二叉链表及案线索二叉链晓表性质婶纳性质羽汉理解械红4_27航毕前序(中序社或后序)线舍索二叉树滩拦原理咳辫掌握原理筛细4_28截弦二叉搜索树津:定义冈凳概念滨遵理解览理4_29之形给定关键码理序列,构造琴二叉搜索树攀骨算法店赤掌握原理昌态4_30灰哗二叉搜索树挺:插入结点石旅算法益宅掌握原理霉蔑代码段岛4_31体羽二叉搜索树彩:删除结点橡得算法低虽掌握原理淋档代码段络4_32缸侵二叉搜索树视:查找结点钟榜算法森惊掌握原理色抖代码段输4_33估拍STL优先冷级队列吩唯应用咸弃掌握方法旨扭完整程序斑4_34百竟最小(大)积堆定义登蚕概念沟计理解破沾4_35欢粘堆的创建-相筛选法盖鞋算法贵手掌握原理仇歪4_36泳托堆的操作:哲插入结点覆赛算法浴传掌握原理猫行4_37排肥堆的操作:骡删除结点沫展算法是眉掌握原理叉按4_38旋弟前缀编码惧阿概念瘦关理解催唇4_39愚分加权平均编慰码长度寸宫概念扭液理解阁究4_40真做Huffm刚an树加权封外部路径长拾度银刊概念浙坝理解立眨4_41刃摄构造Huf宋fman树尺给算法测皱掌握原理季刮编号泄降知识点乌5_01语欢森林的概念筛森林践(fore承st):晋由零棵或多己棵不相交的磁树组成的集江合佩。历注意:幼自然界中的圈树和森林是炭不同的概念容。而数据结找构中的树和遥森领占只有微小的垫差别匙,切删去根结点网,则树就变竿成森林盖;名加上一个结兰点作为根,屯则森林就变旬成树遍。萝在储树或森林与埋二叉树之间碰存在一个自于然的、一一虚对应的关系杠。任何树或吼森林都唯一甘地对应到一宾棵二叉树;疮反过来,任挥何二叉树也疏都唯一地对梅应到一棵树伪或一个森林闸。绣5_02宇支一般树转换肥成二叉树扇把一般树转侄换成二叉树卵,可分为篮3个步骤床:陆连线奏:在差所有兄相邻仰的弟结点之伤间加一条连皆线弹。县切线恳:对树中的贸每个结点,桐只保留他与档第一个子女拌结点之间的团连线,递删除它与其郊它子女结点府之间的连线厚。萝旋转决:以树及子顶树的根结点遥为轴心,刷将所有水平悼方向的连线垮顺时针旋转阁一定角度柳,使之结构卵层次分明。帝(也就是所可有水平方向很连线中右边耻的结点作为堂左边结点的若右子女结点弊)脱5_03殿信森林转换成匀二叉树名把森林转换削成二叉树,浓可分为盲3个步骤喷:吩连线资:在每棵树仗的篇所有兄弟结齐点之间加一篇条连线仅,并肾将每棵树的麻根结点用水钳平线连接向(与将一般峰树转换成二挡叉树相比,书这是唯一增冠加的操作)兆。丸切线浊:对树中的触每个结点,吓只保留他与鲁第一个子女绩结点之间的嘴连线,粉删除它与其元它子女结点落之间的连线篮。库旋转浑:以树及子黄树的根结点尖为轴心,迎将所有水平酷方向的连线己顺时针旋转坏一定角度邀,使之结构粱层次分明。若(也就是所礼有水平方向向连线中右边敲的结点作为扬左边结点的将右子女结点款)沸5_04失狱二叉树还原抢为一般树蚀把二叉树还倒原成一般树储,可分为界3个步骤近:逢连线可:如果某结喊点N是其父民结点的芬左子女结点抓,则遍将该结点的朱右子女及沿厉着其右指针昼不断搜索到榜的右子孙偷,都分别与沿结点N的父妇结点用虚线鲁连接。管切线祖:志去掉原二叉判树中每个结盾点与其右子渗女结点之间蒸的连线稿,仅保留与毛左子女结点案之间的连线池。妨整理毛:把虚线改俘为实线,晃按层次整理拾好所。再5_05忘浙二叉树还原纽为森林强把二叉树还耍原成森林,评可分为兵2个步骤科:弹切线勤:先从根结项点出发沿着晕其右指针不块断遍历到的标所有右子孙城,详将每个右子会孙结点N与纱N的父结点眨的连线去掉尾,得到分离扣的二叉树。刺还原险:翁把分离后的爷每棵二叉树糠还原为一般各树灯。所有的这蔑些一般树就拍组成了森林堪。淋5_06法萍树的动态鬼“确左子结点/曲右兄弟结点景”颗二叉链表表齐示稀5_07欢爹树的先根、己后根次序遍段历朋与二叉树的良深度优先遍嘱历有3种次栽序不同的是抓:树的深度初优先遍历只附有史先根次序纱和走后根次序稼,签不方便按照怒中序法定义挪中根次序党,因为一个满根结点有多依于两个子结繁点时无法明慢确给出根结剑点和这些子欣结点的次序聚。洪先根次序遍霉历酒的迎递归定义秆为:检访问根结点异;轨按先根次序剪遍历第一棵岸子树;肠按先根次序汇遍历其他子幼树。壮后根次序遍效历劳的哪递归定义喷为:哄按先根次序莫遍历第一棵挺子树;伯访问根结点呈;乳按先根次序沃遍历其他子蛮树。里(丑注意理解践“好后根封”顶)谢按先根次序深遍历树,等筛价于按先序叨遍历对应的滩二叉树堂;屡按后根次序中遍历树,等没价于按杠中序乞遍历对应的迷二叉树迹。即:将树的先根次饰序遍历壶ó打对应二叉树御的先序遍历沟(毛ó民表等价)鲁树的后根次义序遍历亚ó蔽对应二叉树银的中序遍历每5_08暖吊树的广度优袍先遍历渠广度优先遍校历也称为宽暖度优先遍历叶,或凳层次遍历价。姐广度优先肿遍历过程桑为:首先依粘次访问层次若为0的结点罢;然后依次蜜访问层次为帐1的结点,厨等等。态5_09壮壁树的子结点饶表表示法袜子结点(链坟)表表示法页包含以下倚两部分日:姜用数组存储额每个结点袍,每个结点督包含3个域锻:拳结点值阔、副父结点编号物、厚子结点链表折表头指针锡-租顺序存储方铸式象。喘将每个结点矩的窝子结点按从俘左到右的顺聋序连接成一首个单链表内,并期用它的表头双指针域指向融这个链表圾-匪链式存储方俘式证。虫优点怪:盘访问每个结厅点的所有子疲结点很方便割。丽缺点虾:贝访问每个结辟点的兄弟结压点很难实现辜。乌其他操作讨涛论:插入结门点、删除结隙点、创建树勇、删除树、歪按各种方式屯遍历、合并摧两棵树等等逢。男5_10及风树的父指针洗表示法吊实现树的最煌简单方法是口对每个结点辫只保存一个数指针域pa遣rent健,指向其父符结点,这种充实现方法称兄为提父指针表示醋法唤。丈父指针表示楼法驾在实现树的章操作方面没瓶有任何优势浇,但是它殊可以实现一华种特殊的数渠据结构-并脾查集吼。痛5_11浩师等价关系及巧等价类艺“蜻同班同学章”固、塘“坦同属于一个悉集合分”丸、设“程森林中两个昨顶点属于同己一棵树栗”妖都是惕等价关系割。独等价关系图(equi度valen慢trel躲ation障)的宅三个条件顿(或称为泳性质统):圣自反性凑:如X胶≡城X,则X展≡键X;(假设诚用堆“吓X手≡掌Y刊”长表示习“琴X与Y等价丘”各)察对称性菊:如X迫≡雁Y,则Y找≡零X;图传递性献:如X膏≡病Y,且Y尺≡凑Z,则X追≡辨Z。掏如果X区≡困Y,则称X头与Y是一个座等价对德(equi烛valen可ce)。夏5_12拖幻并查集的概乱念及作用名判定两个顶绑点是否属于竹同一个等价望类(或集合堵,或同一棵钻树)来。百将两个等价恐类(或两个阻集合,或两术棵树)合并搂。晚一个等价关极系R欧将集合A划抹分成为若干闷个子集合宁,乔这些子集合上互不相交劲,且将这些子集合棍的并集就是吊A骂。四5_13哪迷并查集的三赌个重要运算供查找(Fi虚nd)市:认查找一个元彩素属于哪个蝶集合羊。塔判断评:失判断两个元隆素是否属于旦同一个集合粱。往往包含警在合并运算番中。狠合并(Un厚ion)踏:迁合并两个集尊合厉。嗽5_14劲坝用父指针表嫌示法实现并员查集的思路欣和方法逝要丰判别每个结载点属于哪棵烘树跨,只需要任记录每个结莲点的父结点天编号导(不需要记妻录每个结点卡的其他信息半,比如左子玩女、右兄弟营等)。泽对于每棵树垫的根结点径,由于它没占有父结点,瑞则可以用它妻所在的树中催结点数目代接替它的父结萌点编号互(并齿取负值屯,假定结点挖的编号没有佣负值)。狡定义期paren密t[n]坊数组,pa询rent[泪i]中存放券的就是扔结点i所在乏的树中结点眉i父亲结点箱的序号侨。例如,如尼果pare落nt[4]晴=5,窝就是说4号储结点的父亲略是5号结点链。历约定:如果眉结点i的父些结点(即拣paren局t[i]袜)是校负数束的话,表示比结点i就是疾它所在树的电根结点出;并且谈用负的绝对研值作为这棵常树中所含结迁点个数沙。例如,如掩果pare滤nt[7]出=-4雷,说明7号尊结点就是它团所在树的根示结点,这棵傍树有4个结乌点。敢初始时懂,丑所有结点的睬paren托t[]值演为-1延,说明每个透结点自成一晴棵树,且都库是根结点。悼对读入的每强个等价对X宅≡迹Y,先宅判定葵结点X和Y拉是否属于同快一个集合,废如果是,则桃不管;如果嫂不是,则锄合并付结点X和结始点Y所在的罪集合。(并排查集的3种颠运算的实现穗在骆例3剪中讨论)拢5_15翅喘并查集:查轿找运算及优圈化方案的实俘现炎5_16粪止并查集:合轰并运算及优帝化方案的实灶现画5_17果盛并查集应用斤第6章图北结构错编号拴匙知识点扁芦类型睬棕掌握程度慎位代码要求秃6_01抛扰图的基本概堆念唤惭概念征忧理解盾费图陷是由痛顶点集合北和顶点间关楚系集合(即鞠边的集合雨或肉弧的集合剂)组成的数斩据结构,通啊常可以用陷G阻(捞V闯,住E掠)来表示,煮其顶点集合钟和边的集合膛分别用字V恢(罩G蒜)和讯E纵(冬G品)表示。许V吊(参G虑)中的元素光称为颤顶点筛,用蛇u昂、腥v舟等符号表示肠;顶点个数路称为图的以阶沙,通常用乱n虫表示。眯E鞠(旗G副)中的元素决称为女边搂,用剪e嫌等符号表示顿;边的个数败称为图的爸边数汗,通常用糊m友表示。练顶点的弃度(deg烛ree)醒:现一个顶点的旧度是与它相胳关联的边的馆条数熟,记作条deg答(姐u矿)羽配在有向图中穗,顶点的度寿等于该顶点匹的出度与入互度之和。其挥中,顶点召u夹的出度是以长u惧为起始顶点叮的有向边(警即从顶点临u黄出发的有向呀边)的数目送,记作甩od纪(店u椅);顶点u摧的入度是以输u婆为终点的有凭向边(即进沟入到顶点毙u陪的有向边)滋的数目,记折作赢id督(码u当)。顶点绸u晃的度数:蕉deg寺(低u回)=良od撇(附u吃)+减id龄(鸦u戏)。办即在无向图蚀和有向图中结,所有顶点舒的度的总和鱼,等于边的颜数目的两倍挎。这是因为唱,不管是有序向图还是无婶向图,在统合计所有顶点兵的度的总和统时,芽每条边都统盘计了两次归。梦生成树行:一个无向讽连通图的生缝成树是它的验包含所有顶掉点的极小连巴通子图词,这里所谓伤的极小就是糖边的数目极摧小。如果图距中有随n饥个顶点,则必生成树有绣n忽-1条边。毯在图缘G摄(艺V那,灶E暮)中,若从怖顶点棉vi聋出发,沿着饺一些边经过磁一些顶点净vp策1,检vp犯2,奶…伍,阵vpm将,到达顶点厌vj陪,则称顶点么序列(您vi小,就vp触1,省vp胀2,堵…品,帆vpm霞,屠vj扶)为从顶点际vi倡到顶点路vj浪的一条剑路径弱,其中(顺vi检,蜓vp邮1),(喂vp哨1,北vp记2),稻…卷,(围vpm稀,佳vj论)为图乡G先中的边。如盼果滚G缘是有向图,暂则<速vi墙,咽vp俘1>,<骑vp停1,干vp遥2>,铺…引,<饺vpm炕,乞vj鼠>为图中的势有向边。假路径的长度款:路径中边宾的数目通常贫称为路径的奏长度。怒权值嘴:某些图的意边具有与它葵相关的数,衰称为正权值典。这些权值底可以表示钳从一个顶点施到另一个顶斑点的距离修、纱花费的代价传、购所需的时间井等。确如果一个图迷,其所有边最都具有权值斯,关则称为疾网络捆。隆根据网络中公的边是否具绿有方向性,撇又可以分为螺有向网扫和息无向网脂。网络可以心用美G兔(饰V洽,再E桶)表示,其赖中边的集合价E中每个元碗素包含3个糕分量:边的留两个顶点和钻权值。厅6_02拣北图的邻接矩治阵助苦概念作梯理解赠调在邻接矩阵伟中,除了一拿个记录各个悦顶点信息的策顶点数组外师,还有一个挽表示各顶点由之间关系的党矩阵,称为馋邻接矩阵缴。兼6_03蜜庸图的邻接表趁实现昼嚷算法侦宁掌握原理搅五代码段筐邻接表候:荒把同一个顶酷点发出的边津链接在同一停个称为边链歉表的单链表狼中遇。(这种邻箩接表也称为压出边表输)判逆邻接表择:也称为纵入边表骂,顶点i的六边链表中链餐接的是所有稳进入该顶点艳的边。适合泡求顶点的入胞度。械以有向图为皮例介绍邻接往表的实现方依法。为了方刺便求解顶点羞的出度和入萍度,在实现英时,毁把出边表和础入边表同时戏包含在表示减顶点的结构往体中钳。晨6_04略扣图的遍历斥纪概念骡沙理解屑线图的遍历末(Grap诱hTra美versa核l)的含义坦:从已给图胶中的某一顶针点出发,沿犁着一些边挽访遍左图中所有的智顶点,且使梳每个顶点仅彻被访问一次批(注意理解月)。评6_05权春图的深度优床先搜索锅报算法纪渴掌握原理奋渔深度优先搜失索疑(Dept台hFir作stSe业arch)韵:是一个递精归过程,有庭回退过程,若它的思想在滩很多题目当捡中要用到对弄图6.4.扮1(a)所系示的无向连议通图,采用据DFS思想财搜索的过程督为:急(在图(a坊)中,扫箭头旁的数企字跟下面的首序号对应队)葛从顶点A出揭发,访问塑顶点序号最哈小模的邻接顶点估,即顶点B蓬;躲然后访问顶傍点B的一个滴未访问过的券邻接顶点,夺即顶点C;健(3)接久着访问顶点奶C的一个未怖访问过的邻邀接顶点,即圆顶点G;跪(4)此讯时顶点G慧已经没有未弹访问过的邻巷接顶点了重,所以袄回退折到顶点C;宗(5)回顿退到顶点C牵后,顶点C机也没有未访辅问过的邻接趁顶点了,所节以黄继续回退安到顶点B;蛛。6)顶粒点B还有一骄个未访问过小的邻接顶点他,即顶点E完,所以访问镇顶点E;司(7)然垃后访问顶点芬E的一个未赴访问过的邻夹接顶点,即种顶点F;信(8)顶泻点F有两个习未访问过的能邻接顶点,嫁选择顶点序诱号最小亭的,即顶点播D,所以访范问D;辰(9)此桨时顶点D已巧经没有未访失问过的邻接莲顶点了,所乡以侦回退燕到顶点F;遭(10)艇顶点F还有荡一个未访问络过的邻接顶久点,即顶点居H,所以访勒问顶点H;倒(11)踏然后访问顶梦点H的一个铸未访问过的浸邻接顶点,笑即顶点I;坑(12)先此时吩顶点I已经执没有未访问明过的邻接顶目点孩了,所以锡回退俊到顶点H;痕(13)消回退到顶点糕H后,顶点霜H也没有未悠访问过的邻抽接顶点了,柳所以上继续回退到挽顶点F裂;裹(14)晒回退到顶点场F后,顶点嗓F也没有未垦访问过的邻环接顶点了,铺所以惯继续回退到溪顶点E墓;猫(15)俭回退到顶点背E后,顶点秒E也没有未鸦访问过的邻锦接顶点了,茫所以抱继续回退到鉴顶点B吧;奸(16)泉回退到顶点蹲B后,顶点怒B也没有未绍访问过的邻留接顶点了,战所以史继续回退到贪顶点A熊;辰6_06卡惊图的广度优敏先搜索犯稻算法则娘掌握原理胸却广度优先搜摄索挽(Brea险dthF吼irst酷Searc慰h):是抖一个分层的涛搜索过程,嚼没有回退的虹情况,是非洁递归的。罩6_07杂间图的最小生集成树映雅概念嗽哗理解度血生成树果:连通图G凯的一个子图偶如果是一棵换包含G的所张有顶点的树刻,则该子图徒称为G的愁生成树翻。保用不同的遍蒸历图的方法痒,可以得到趣不同的生成别树;从不同潜的顶点出发杆,也可能得宜到不同的生笛成树。津生成树是连畅通图的誉最小连通子皆图滤。所谓躬最小企是指:芦若在树中任访意增加一条辽边,则将出餐现一个回路烧;衫若去掉一条土边,将会使闭之变成非连梨通图。灰按照生成树泼的定义,阶n催个顶点的防连通网络的变生成树有愿n呜个顶点、版n-1烈条边。柏最小生成树棉:生成树各踏边的权值总粒和称为生成属树的权,权谈最小的生成急树称为沃最小生成树智。残构造最小生臂成树的准则票:爸必须只使用安该网络中的陕边来构造最蹄小生成树;贸必须使用且吵仅使用n佛-1条边馆来联结网络迅中的n拜个顶点;悔不能使用产线生回路的边盟。捧构造最小生鲁成树的方法自:怨克鲁斯卡尔小(Krus铸kal)启算法和饼普里姆(P汉rim)赛算法。都得响遵守以上准捉则。净6_08芒误Krusk悄al算法挣掉算法熊锦掌握原理抱结完整程序累Krusk夕al算法猪执行过程鲁:田将m条边存怖储在edg诉es数组中催,并同按权值从小残到大排序萍。雀依次检查每购条边,如果低该边的两个歪顶点不属于树同一个集合污,则炎选用该边翠、并将这两堵个集合己合并估;否则犹弃用这条边及。洒6_09矮坝最短路径问正题班者概念缓督理解鲜工最短路径问鼻题徒:如果从图勾中某一顶点诵(称为源点虑)到达另一泼顶点(称为碗终点)的路般径可能不止幕一条,如何杰找到一条路晕径,使得销沿此路径各斥边上的权值技总和达到最悟小各。求解算法:番权值为非负葡的单源最短纳路径问题凯(固定源点绞)-熄Dijks被tra算法鸣(迪克斯特告拉算法,1俊959);索权值为任意黑值的单源最鸭短路径问题外(固定源点蚂)-防Bellm阳an-Fo克rd算法顶(贝尔曼-猴福特算法)债;汉Bellm震an-Fo变rd算法的滋改进晃-絮SPFA算喉法达;辰所有顶点之概间的最短路闻径问题稿-统Floyd统-Wars变hall算却法傍(弗洛伊德斧算法);走6_10症陆Dijks少tra算法假敬算法太椒掌握原理隔用完整程序能为求得这些豆最短路径,袍Dijks隆tra提出组按路径长度狐的递增次序下,逐步产生底最短路径的级算法。首先泥求出长度最企短的一条最饥短路径,再正参照它求出怨长度次短的茶一条最短路制径,依次类怪推,直到从圾顶点v到其元它各顶点的霉最短路径全去部求出为止净。蒙第7章内笔排序敢编号洞蚕知识点场元类型记赔掌握程度踩叙代码要求脉7_01阵吗排序问题的肚基本概念羽概概念奉啦理解率荡在得计算机应用雕软件燕中经常需要语对所管理的哭各种茂数据进行处期理脏,恭排序珍往往是这些稳数据处理中达需要用到的景核心运算勺。伤内排序宇:如果待排邪序的由记录修个数较少,剧整个排序过治程中所有的匪记录都可以俗直接存放在胀内存中始,这样的排私序叫做内排造序(int行ernal度sort瓜ing)。绩外排序棚:如果待排穗序的记录数僻量太大,内最存无法容纳男所有的记录蚁,因此声排序过程中姿还需要访问莲外存斜,这样的排堡序叫做外排袖序(ext脚ernal览sort氧ing)。替由于讨论的怨是内排序,捕在大部分情译况下本章都射是甲考虑基于顺漏序存储的排津序汇,即掀待排序的数揪据是存储在蓄数组缴中。户记录吼(reco皇rd):端参与排序的政元素称为记师录席,记录是进诱行排序的基申本单位。护序列蚀(sequ嘉ence)爱:莲所有待排序洋记录的集合破称为决序列葛。所谓排序肿就是将序列拳中的记录按漫照特定的顺秆序排列起来席。正7_02竹疮用系统函数仅实现排序粉烂应用左尺掌握方法律物完整程序源在实际编程价时,刚可能柏不需要自己淘实现排序算券法,声直接调用系鼻统函数实现胞排序即可判。但六这并不意味施着本章介绍浩的排序算法敌原理、程序裹实现不需要劣掌握逮。搏实现排序的签系统函数主赢要有:qs绳ort、s牙ort函数谷qsort垃函数顽:燕采用快速排槐序算法(7贪.4.1节脊)实现。矛sort函广数圆:振STL提供疏的算法,常助常结合ST遥L中的容器睛和迭代器使址用。隐7_03摩嚷插入法排序样炒算法码迷掌握原理门滴完整程序贿逐个处理待换排序的记录粱,决每个新记录似都要与前面弹那些已排好么序的记录进淡行比较,然乖后插入到适需当的位置晒。池7_04训慕冒泡法排序滩纽算法字成掌握原理己码完整程序554204520425042054202402042002武冒泡法是不叠是一定要比匪较n-1趟盟?步不一定!祥比如前面的蹈例2中,n萌=8,但实氏际上只需要忠进行5趟比三较,后面2蓝趟没有进行哨交换。也就嫩是说,如果棉在某一趟比蜂较过程中,局没有发现招前一个数比糖后一个数大巷的情况,即宫没有进行交研换数据,那渗么后面就不仔需要再进行苦比较了。稠极端的情况敬,假设n个遥数已经是按展从小到大的俗顺序排好了车,那么实际松上只需要进跨行一趟比较蜡就可以得出却结论了。茶7_05疼常选择法排序亿需算法宜火掌握原理广屯完整程序崖直接选择排男序法也需要贤用一个列二重循环币来实现,同疗样可以带着顿以荷下3个类似羊问题来理解夹

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论