还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据结构复习要点课们习数结课识为试本件旨在帮助同学系统地复据构程的重要知点,期末考做好充分准备课程学习目标与要求学习目标学习要求数结计独数结计语现数理解据构的基本概念、基本操作和算法设方法掌握常见能够立完成据构的分析和设,并能用程序言实据数结线栈队树图结数结时的据构类型,包括性表、、列、、等构的操作掌握据构的基本算法,并能分析算法的间复杂杂度和空间复度考试范围与形式说明考试范围考试形式数结内闭试选择题题简题计题覆盖本学期所学的所有据构容,包括基本概念、基本操作卷笔,包括、填空、答、算法设等计、算法设等第一章数据结构概论数据结构定义数据结构的分类数据结构的基本操作123数结计数结为线结线数结据构是算机科学中的一个重据构可以分性构和非据构的基本操作包括插入、删数计结线结线栈要概念,它研究据在算机中的性构,性构包括性表、除、查找、修改等组储数队线结树图织方式和存方式,以及据之、列等;非性构包括、关间的系等数据的逻辑结构与存储结构逻辑结构存储结构逻辑结数逻辑关关数储结数计内储虑构是指据元素之间系的抽象描述,它只心据存构是指据元素在算机存中的实际存方式,它考关虑数内储数储数组元素之间的系,而不考据元素在存中的存方式据的存地址、据元素的织方式等算法的时间复杂度分析时间复杂度定义时间复杂度分析方法时杂执计时时杂关执时算法的间复度是指算法行所需要的算间,它通常用一间复度分析方法通常采用大O表示法,它只注算法行数来数问题规数执问题规趋势数项阶项个函表示,函的自变量是的模,函的值是算法间随模增长的,忽略常和低时行所需的间大表示法详解OO1数时杂执时问题规关常间复度,算法行间与模无On线时杂执时问题规线关性间复度,算法行间与模呈性系On^2时杂执时问题规关平方间复度,算法行间与模的平方呈正比系Olog n对数时杂执时问题规对数关间复度,算法行间与模的呈正比系算法空间复杂度分析空间复杂度定义空间复杂度分析方法杂执储杂关执算法的空间复度是指算法行所需要的存空间,它通常用一空间复度分析方法通常也采用大O表示法,它只注算法行数来数问题规数执问题规趋势数项阶项个函表示,函的自变量是的模,函的值是算法空间随模增长的,忽略常和低行所需的空间第二章线性表概述线性表定义线性表的特点12线线结线数结性表是一种性构,它由性表是一种最基本的据数组这数简单现来n个据元素成,些据构,它易懂,实起也线关较线元素之间存在着性系,即比方便但是,性表的操除了第一个和最后一个元素外作效率可能会受到限制,尤其驱对数,每个元素都有一个前元素是于大量据而言继和一个后元素线性表的应用3线计应编译来性表在算机科学中有着广泛的用,例如在器中用它保存来进队符号表,在操作系统中用它管理程列顺序表的定义与实现顺序表的定义顺序表的实现顺线连续内来储数顺数组来现数组对应线数序表是一种性表,它使用的存空间存据元素,序表可以使用实,的元素着性表中的据数逻辑顺顺顺较数时据元素的序和物理序一致元素序表的操作效率高,尤其是在查找和修改据元素顺序表的基本操作插入顺数将数在序表中插入一个新的据元素,需要原有的据元素向后移动,将数然后新的据元素插入到空出的位置删除顺数将数从序表中删除一个据元素,需要后面的据元素向前移动,然后将空出的位置覆盖查找数顺过历顺来现查找一个据元素在序表中的位置,可以通遍序表实由数顺逻辑顺较于据元素的物理序和序一致,所以查找的效率高修改顺数该内修改序表中一个据元素的值,直接修改元素的存空间即可单链表的定义与实现单链表定义单链表的实现单链线连续内来储数单链链结来现链结数表是一种性表,它使用非的存空间存据元素表可以使用表点实,每个表点包含一个据域数数针针针结单链对,每个据元素包含一个指向下一个据元素的指和一个指域,指域指向下一个点表的操作效率相顺来说较数时序表低,尤其是在查找据元素单链表的插入操作插入新结点创建新结点将结针查找插入位置新点的指域指向插入位置的前一个创结将数为结继结将建新点,并其据域设置要插入点的后点,并插入位置的前一个结数结继结为结首先需要找到插入位置的前一个点的据元素的值点的后点设置新点单链表的删除操作释放空间修改指针释结内查找删除位置放要删除点的存空间将结结针要删除点的前一个点的指域指向结结继结首先需要找到要删除的点要删除点的后点循环链表详解循环链表定义循环链表的优点环链单链结针环链结开历链循表是一种表,它的最后一个点的指域指向第一个循表可以方便地从任何一个点始遍表,并且可以用结闭环应问题环缓区点,形成一个于解决一些特殊的用,例如形冲双向链表详解双向链表定义双向链表的优点链线结结链结开历链双向表是一种性表,每个点包含一个指向前一个点的指双向表可以从任何一个点始遍表,并且可以方便地插针结针结为结针来域和一个指向后一个点的指域入和删除点,因它可以使用前一个点的指域定位要操结作的点第三章栈与队列栈与队列的定义栈与队列的特点12栈队线们栈队计和列都是性表,但它和列在算机科学中有着栈应栈的操作方式不同是一种后广泛的用,例如可以用于进线数调先出(LIFO)的性表,函用、表达式求值等,而队进队调缓而列是一种先先出(列可以用于任务度、冲线区FIFO)的性表管理等栈与队列的实现3栈队顺链来现顺现栈队称为和列可以使用序表和表实序表实的和列顺栈顺队链现栈队称为链栈链队序和序列,而表实的和列和列栈的基本概念栈的定义栈的基本操作栈进线许进栈进栈栈栈顶是一种后先出(LIFO)的性表,允在表的一端行插的基本操作包括(push)、出(pop)、取元素这称为栈顶称为栈断栈为断栈为满入和删除操作,一端,另一端底(top)、判是否空(empty)、判是否(full)等顺序栈的实现顺序栈的定义顺序栈的实现顺栈数组来储栈数组对应栈顺栈现较简单栈满栈栈满序使用存元素,的第一个元素着底,序的实比,但是需要注意和空的情况数组对应栈顶时进扩栈时则进断现访问的最后一个元素着需要行展,而空需要行判,防止出越界的情况链栈的实现链栈的定义链栈的实现链栈链来储栈链结对应栈链链栈现较预内态使用表存元素,表的第一个点着底,的实比灵活,不需要先分配存空间,可以动地添结对应栈顶结链栈较对频进表的最后一个点着加和删除点的操作效率也高,尤其是于繁行插入和删除操作的情况栈的应用表达式求值步骤一1将转换为缀表达式后表达式步骤二2创栈建一个步骤三3扫缀数则栈则栈弹数进描后表达式,遇到操作入,遇到运算符从中出两个操作,将结栈行运算,并果入步骤四4骤扫栈顶为结重复步三,直到描完整个表达式,元素即表达式的果栈的应用递归实现递归函数的定义递归函数的实现归数数调数归数归数现栈来数调数递函是指在函定义中用自身的一种函递函可以递函的实需要使用保存函用信息,例如函的参杂问题诺问题数数归调将数压栈用于解决一些复的算法,例如汉塔、斐波那契列、局部变量、返回值等每次递用都会函信息入数时则栈弹数等中,而函返回从中出函信息队列的基本概念队列的定义队列的基本操作队进线许进队队队列是一种先先出(FIFO)的性表,允在一端行插入列的基本操作包括入(enqueue)、出(dequeue)、称为队进称为队队断队为断队操作,入,而在另一端行删除操作,出取头元素(front)、判列是否空(empty)、判为满列是否(full)等循环队列的实现循环队列的定义循环队列的实现环队数组来储队数组对应队环队现队满队队满时循列使用存列元素,的第一个元素着循列的实需要注意列和列空的情况列需要数组对应队进断队时则进断现访问列头,的最后一个元素着列尾行判,而列空需要行判,防止出越界的情况链队列的实现链队列的定义链队列的实现链队链来储队链结对应队链队现较预内态列使用表存列元素,表的第一个点着列列的实比灵活,不需要先分配存空间,可以动地链结对应队结链队较对频进头,表的最后一个点着列尾添加和删除点列的操作效率也高,尤其是于繁行插入和删除操作的情况第四章串串的定义串的特点12组线数串是由零个或多个字符成的串是一种特殊的性表,其来储有限序列,通常用表示字符据元素是字符串的存方式线串和操作方法与性表类似,但有一些特殊的算法,例如KMP算法串的应用3计应编辑来串在算机科学中有着广泛的用,例如在文本器中用它表示数库来文本,在据中用它表示字段的值串的基本操作插入将将在串中插入一个新的字符,需要原有的字符向后移动,然后新的字符插入到空出的位置删除将将从串中删除一个字符,需要后面的字符向前移动,然后空出的位置覆盖查找过历来现查找一个字符在串中的位置,可以通遍串实由于字符的顺逻辑顺较物理序和序一致,所以查找的效率高修改该内修改串中一个字符的值,直接修改字符的存空间即可算法原理KMP算法概述算法的原理KMP KMP关键结来KMP算法是一种字符串匹配算法,它可以高效地查找一个模式KMP算法的在于利用模式串自身的构避免不必要的比现数较过缀称为来记录串在一个文本串中出的次和位置它通构建一个前表(也next表),模式串缀中每个字符之前的最长相同前后的长度算法实现KMP构建前缀表缀记录首先需要构建一个前表,模式串中每个字符之前的最长相同前后缀的长度匹配过程缀来导过过较然后,使用前表指匹配程,可以跳一些不必要的比,从而提高匹配效率匹配结果结断现现最后,根据匹配果判模式串是否在文本串中出,以及出的位置第五章树与二叉树树的定义二叉树的定义12树线结树树是一种非性构,它由一二叉是一种特殊的,每个结树组结树别个根点和若干子成,子点最多只有两个子,分树层关称为树树之间是次系左子和右子树与二叉树的应用3树树计应和二叉在算机科学中有着广泛的用,例如在文件系统中用它来录结编译来语树表示目构,在器中用它表示法树的基本概念结点的度树的度树的高度树的深度结该结树树结树树结树树结点的度是指点拥有的的度是指中所有点的的高度是指中从根点的深度是指中所有点树数结径结该结子的个度的最大值到叶子点的最长路的长的深度(即从根点到径度点的路长度)的最大值二叉树的定义二叉树的定义二叉树的分类树树结树别称为树为树满树树二叉是一种特殊的,每个点最多只有两个子,分二叉可以分完全二叉、二叉、二叉排序等,根据不树树结应场进左子和右子同的构特点和用景行分类二叉树的性质性质一性质二12树层为树在二叉的第i上,最多有深度k的二叉,最多有结结2^i-1个点(i≥1)2^k-1个点(k≥1)性质三3对树结数为为结数为于任何一棵二叉,若其叶子点n0,度2的点n2,则n0=n2+1二叉树的遍历遍历的定义遍历的种类历规则访问树结结树历别历历遍是指按照一定的二叉中所有点,使得每个点二叉的遍主要有四种,分是先序遍、中序遍、后序遍访问仅访问历层历都被一次且被一次和次遍先序遍历算法访问根结点访问结首先根点递归遍历左子树归历树然后递地遍左子递归遍历右子树归历树最后递地遍右子中序遍历算法递归遍历右子树访问根结点归历树递归遍历左子树最后递地遍右子访问结然后根点归历树首先递地遍左子后序遍历算法递归遍历左子树归历树首先递地遍左子递归遍历右子树归历树然后递地遍右子访问根结点访问结最后根点层次遍历算法循环遍历使用队列环历队访问队将队从根结点开始循遍列,头元素,并头队来储访问结结队使用列存待的点元素的左右子点(如果有)入,直到结开层访问树结队为为从根点始,按二叉的点列空止二叉树的建立方法一方法二方法三方法四历顺将数历顺将数历顺将数层历顺将数使用先序遍的序,使用中序遍的序,使用后序遍的序,使用次遍的序,树树树树据元素逐个插入到二叉中据元素逐个插入到二叉中据元素逐个插入到二叉中据元素逐个插入到二叉中线索二叉树线索二叉树的定义线索二叉树的优点线树树础树闲针来线树进历索二叉是在二叉的基上,利用二叉中空的指域索二叉可以方便地行中序遍,并且可以快速地找到某个驱结继结针进结驱结继结存放指向其前点或后点的指,从而可以方便地行遍点的前点或后点历哈夫曼树与哈夫曼编码哈夫曼树的定义哈夫曼编码的原理树带权径树数压编码编码现频为哈夫曼是一种路长度最小的二叉,它可以用于据哈夫曼是一种变长,它根据字符出的率每个字符缩编码现频较编码分配不同的长度,出率高的字符分配短的,而出现频较编码现数压缩率低的字符分配长的,从而可以实据第六章图图的定义图的分类12图线结结图为图图是一种非性构,它由可以分有向和无向,组结图点和边成,点表示事物,有向的边是有方向的,而无关图没边表示事物之间的系向的边有方向图的应用3图计应络来在算机科学中有着广泛的用,例如在交通网中用它表示城线络来关市之间的路,在社交网中用它表示用户之间的系图的基本概念结点的度图的度路径回路结该结连图图结径结结点的度是指与点相的度是指中所有点的路是指从一个点到另一回路是指从一个点出发,数结过该结的边的量度的总和个点的一条边序列经若干条边后又回到径点的一条路图的存储结构邻接矩阵邻接表阵维数组来图储结数组链来图储结链结对应邻接矩是用一个二表示的存构,的行和列邻接表是用一个表表示的存构,表的每个点别图结数组结图结结数该结分代表的点,元素的值表示两个点之间是否存在边着的一个点,点中包含一个据域和一个指向点的所权结针,以及边的值有邻接点的指域邻接矩阵表示法邻接矩阵的定义邻接矩阵的优点阵维数组来图储结数组阵现简单结邻接矩是用一个二表示的存构,的行和列邻接矩的优点是实,易于查找两个点之间是否存在边别图结数组结权阵杂较分代表的点,元素的值表示两个点之间是否存在边,以及边的值但是,邻接矩的缺点是空间复度高,尤权图数较,以及边的值其是在的边少的情况下邻接表表示法邻接表的定义邻接表的优点链来图储结链结对应杂较图数较邻接表是用一个表表示的存构,表的每个点邻接表的优点是空间复度低,尤其是在的边少的情况图结结数该结结着的一个点,点中包含一个据域和一个指向点的所下但是,邻接表的缺点是查找两个点之间是否存在边,以及结针权历链有邻接点的指域边的值需要遍表图的遍历遍历的定义遍历的种类历规则访问图结结图历别遍是指按照一定的中所有点,使得每个点都被的遍主要有两种,分是深度优先搜索(DFS)和广度优先访问仅访问一次且被一次搜索(BFS)深度优先搜索选择一个起始结点选择结将标记为访问一个起始点,并其已递归访问邻接结点归访问结访问结将这结递地起始点的所有未被的邻接点,并些邻接点标记为访问已回溯当结结访问结访起始点的所有邻接点都被后,返回到起始点,并问访问结其下一个未被的邻接点广度优先搜索选择一个起始结点选择结将标记为访问一个起始点,并其已使用队列队来储访问结使用列存待的点循环遍历环历队访问队将队访问循遍列,头元素,并头元素的所有未被的结队将这结标记为访问队为邻接点入,并些邻接点已,直到列空为止最小生成树最小生成树的定义最小生成树的应用树连图选树应络计来络最小生成是指一个通无向的所有边中,取一个边集,使最小生成的用非常广泛,例如在网设中用它构建网这树这树权结络来寻径得个边集构成一棵,并且棵的总值最小拓扑构,在交通网中用它找最短路算法Prim选择一个起始结点选择结将树一个起始点,并其加入到最小生成中循环选择最小权值的边环选择树结连权将这循与最小生成中点相的最小值的边,并条边的另树结树一个端点加入到最小生成中,直到所有点都被加入到最小生成中最小生成树终为树最得到的边集即最小生成的边集算法Kruskal排序将图权进的所有边按照值从小到大行排序循环添加边环权产结连循添加值最小的边,但是要避免生回路,直到所有点都被接到一起最小生成树终为树最得到的边集即最小生成的边集最短路径最短路径的定义最短路径的应用径图结结径径应络来寻最短路是指在一个中,从一个点到另一个点的最短路最短路的用非常广泛,例如在交通网中用它找城市之线络来寻数径间的最短路,在网路由中用它找据包的最佳路算法Dijkstra选择一个起始结点选择结将标记为访问结一个起始点,并其已,并初始化所有点的距离循环选择最小距离的结点环选择树结连结将这循与最小生成中点相的最小距离的点,并条边的树结另一个端点加入到最小生成中,并更新所有点的距离,直到所有结树点都被加入到最小生成中最短路径终径为径最得到的路即最短路算法Floyd初始化距离矩阵阵阵结初始化一个距离矩,矩的元素表示两个点之间的距离循环更新距离矩阵环历结对结环历结对循遍所有点,于每个点,循遍所有点,更新两个结结对点之间的距离,直到所有点的距离都被更新最短路径终阵结最得到的距离矩中,每个元素表示两个点之间的最短距离第七章查找查找的定义查找的种类12寻顺查找是指在一个集合中找某查找的种类有很多,例如序过个特定元素的程查找、二分查找、哈希查找、树形查找等查找的应用3计应数库数查找在算机科学中有着广泛的用,例如在据中查找据,在操作系统中查找文件顺序查找遍历集合开历从集合的第一个元素始,逐个遍集合中的所有元素比较将当标进较前元素与目元素行比找到目标元素标则标则历如果找到目元素,返回目元素的位置;否,遍完整个标集合后,返回一个特定的值表示未找到目元素二分查找前提条件须二分查找的前提条件是集合中的元素必是有序的查找过程较将围缩二分查找是一种基于比的查找算法,它每次查找范小一半将标进较标首先,目元素与集合的中间元素行比,如果目元素等于中则标标间元素,查找成功,返回目元素的位置;如果目元素小于中间则继续标则元素,在左半部分查找;如果目元素大于中间元素,在右继续围为标为半部分查找,直到查找范空或找到目元素止效率顺时杂为二分查找的效率比序查找高很多,它的间复度Olog n二叉排序树二叉排序树的定义二叉排序树的优点二叉排序树的缺点树树树树数二叉排序是一种特殊的二叉,它的二叉排序的优点是查找、插入和删除二叉排序的缺点是,如果插入的据树结结较时杂为顺则树左子的所有点的值都小于根点的操作的效率高,它的间复度元素的序是有序的,二叉排序会树结为线值,而右子的所有点的值都大于根Olog n退化性表,查找、插入和删除操作结树进点的值二叉排序可以高效地行的效率会降低查找、插入和删除操作平衡二叉树平衡二叉树的定义平衡二叉树的优点平衡二叉树的缺点树树树证树现较平衡二叉是一种特殊的二叉排序,平衡二叉的优点是,它可以保查找平衡二叉的缺点是,它的实比复结树终杂进额来维它要求所有点的左右子的高度差不、插入和删除操作的效率始保持在,需要行外的操作护平衡性过证能超1,以保查找、插入和删除操作Olog n为数顺的效率不会因据元素的序而降低。
个人认证
优秀文档
获得点赞 0