数据结构重点

合集下载

数据结构的重点知识点

数据结构的重点知识点

数据结构的重点知识点数据结构是计算机科学中非常重要的基础知识,它主要研究数据的组织、存储和管理方式。

在学习数据结构的过程中,有一些重点知识点需要特别关注和理解。

本文将从以下几个方面介绍数据结构的重点知识点。

一、线性表线性表是数据结构中最基本、最简单的一种结构。

它包括顺序表和链表两种实现方式。

1. 顺序表顺序表是线性表的一种实现方式,它使用一个连续的存储空间来存储数据。

顺序表的主要操作包括插入、删除和查找等。

2. 链表链表是线性表的另一种实现方式,它使用节点来存储数据,并通过指针将这些节点连接起来。

链表的主要操作包括插入、删除和查找等。

二、栈和队列栈和队列是线性表的特殊形式,它们的主要特点是插入和删除操作只能在特定的一端进行。

1. 栈栈是一种先进后出(LIFO)的数据结构,它的插入和删除操作都在栈顶进行。

栈的主要操作包括入栈和出栈。

2. 队列队列是一种先进先出(FIFO)的数据结构,它的插入操作在队尾进行,删除操作在队头进行。

队列的主要操作包括入队和出队。

三、树和二叉树树是一种用来组织数据的非线性结构,它由节点和边组成。

树的重点知识点主要包括二叉树、二叉搜索树和平衡树等。

1. 二叉树二叉树是一种特殊的树结构,它的每个节点最多只能有两个子节点。

二叉树的主要操作包括遍历、插入和删除等。

2. 二叉搜索树二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点的值都小于根节点的值,右子树中的所有节点的值都大于根节点的值。

二叉搜索树的主要操作包括查找、插入和删除等。

四、图图是由节点和边组成的一种复杂数据结构。

图的重点知识点主要包括有向图和无向图、图的遍历和最短路径算法等。

1. 有向图和无向图有向图和无向图是图的两种基本形式,它们的区别在于边是否有方向。

有向图的边是有方向的,而无向图的边没有方向。

2. 图的遍历图的遍历是指对图中的每个节点进行访问的过程。

常见的图遍历算法有深度优先搜索(DFS)和广度优先搜索(BFS)。

408数据结构重点章节

408数据结构重点章节

408数据结构重点章节一、线性表线性表是最基本、最常用的数据结构之一,它包括顺序表和链表两种形式。

顺序表是将数据元素连续存储在物理内存中的一种结构,它的特点是随机访问性强,但插入和删除操作较慢。

链表则是将数据元素通过指针链接起来的一种结构,它的特点是插入和删除操作快,但随机访问性较差。

在实际应用中,需要根据具体问题的要求选择合适的线性表结构。

二、栈和队列栈和队列是两种特殊的线性表结构。

栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队列的一端进行插入操作,另一端进行删除操作。

栈和队列在实际应用中广泛使用,如计算机的函数调用、表达式求值、缓冲区管理等。

三、树和二叉树树是一种非线性的数据结构,它由节点和边组成。

树的特点是具有层次结构、一个节点可以有多个子节点、没有前驱节点等。

二叉树是一种特殊的树,每个节点最多有两个子节点。

在二叉树中,有许多重要的概念和操作,如遍历(前序、中序、后序)、查找、插入、删除等。

树和二叉树在计算机科学领域有着广泛的应用,如文件系统、数据库索引、网络路由等。

四、图图是由顶点和边构成的一种非线性数据结构。

图的特点是顶点之间可以有多条边,边可以有权重。

图分为有向图和无向图两种形式。

在图的表示和遍历中,常用的方法有邻接矩阵和邻接表。

图的算法有许多经典问题,如最短路径问题、最小生成树问题、拓扑排序等。

图的应用非常广泛,如社交网络、交通规划、电路设计等。

五、查找和排序查找和排序是数据处理中常用的操作。

查找是根据给定的关键字在数据集合中寻找目标元素的过程,常用的查找算法有顺序查找、二分查找、哈希查找等。

排序是将数据集合按照某种规则重新排列的过程,常用的排序算法有冒泡排序、插入排序、快速排序、归并排序等。

查找和排序在各种应用场景中都有广泛的应用,如数据库查询、搜索引擎、数据分析等。

六、哈希表哈希表是一种根据关键字直接访问数据的数据结构,它通过哈希函数将关键字映射到哈希表的索引位置。

数据结构重点难点

数据结构重点难点

数据结构重点难点数据结构是计算机科学中非常重要的一门基础课程,它为我们理解和应用计算机中的数据提供了基础。

然而,由于其抽象性和概念性较强,学习数据结构往往是许多学生的一个挑战。

本文将介绍数据结构的几个重点难点,帮助读者更好地理解和掌握这门学科。

一、数组和链表数组和链表是数据结构中最基本的两种形式。

数组是一种连续的存储结构,可以通过索引访问元素,而链表是一种非连续的存储结构,每个节点都包含一个元素和一个指向下一个节点的指针。

数组的插入和删除操作比较麻烦,而链表的访问操作比较耗时。

在实际应用中,需要根据具体的场景选择数组还是链表。

二、栈和队列栈和队列是经常用到的数据结构。

栈是一种后进先出(LIFO)的结构,只允许在栈顶进行插入和删除操作,类似于堆叠盘子。

而队列是一种先进先出(FIFO)的结构,允许在队尾进行插入操作,在队头进行删除操作,类似于排队。

在实际应用中,栈和队列经常用于解决问题的算法设计。

三、树和二叉树树是一种非线性的数据结构,它由节点和边组成。

树的一个节点可以有多个子节点,而每个节点都有一个父节点,除了根节点外。

特殊的一种树结构是二叉树,它每个节点最多有两个子节点。

树和二叉树在很多应用中被广泛使用,如文件系统、数据库索引等。

四、图图是由节点和边构成的非线性数据结构,它可以用来表示复杂的关系和网络。

图由顶点集合和边集合组成,顶点表示图中的元素,边表示顶点之间的关系。

图可以是有向的或无向的,带权重的或不带权重的。

图的遍历算法和最短路径算法是图的重点难点,它们在图的应用中具有重要的作用。

五、排序和查找算法排序和查找是数据结构中常用的操作。

排序算法的目的是将一个无序的数据序列按照一定的规则进行整理,使其按照升序或降序排列。

常见的排序算法有冒泡排序、插入排序、选择排序、快速排序等。

查找算法的目的是在一个有序的数据序列中寻找指定的元素,常见的查找算法有顺序查找、二分查找、哈希查找等。

综上所述,数据结构是计算机科学中非常重要的一门课程,也是许多学生的挑战。

数据结构重点

数据结构重点

数据结构重点1.数据结构+算法=程序设计2.数据元素是数据的基本单位,数据项是数据的不可分割的最小单位3.数据对象:性质相同的数据元素的集合,是数据的一个子集。

4.数据结构:带有某种结构的数据元素的集合。

5.数据结构的4种基本类型:(1)集合(2)线性结构(3)树形结构(4)图状结构或网状结构6.数据的物理结构(又称存储结构):数据结构在计算机中的表示(又称映像)7.在计算机中,表示信息最小单位是二进制数的一位叫做(位)8.数据元素之间的关系在计算机中的表示方法有:(1)顺序映像(2)非顺序映像9.线性结构的特点:在数据元素的非空有限集合中(1)存在唯一的一个被称作“第一个”的数据元素(2)存在唯一的一个被称作“最后一个”的数据元素(3)除第一个外,集合中的每个元素均只有一个前驱;(4)除最后一个外,集合中每个数据元素均只有一个后继10.线性表的顺序表示用一组地址连续的存储单元依次存储线性表的数据元素。

11.线性表的第i个元素的存储位置为LOC(ai)=LOC(a1)+(i-1)*L12.队列:先进先出。

它只允许在表的一端插入,而在另一端删除元素描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

解:头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2 填空题。

解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。

(2) 顺序表中逻辑上相邻的元素的物理位置必定紧邻。

单链表中逻辑上相邻的元素的物理位置不一定紧邻。

(3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。

(4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。

数据结构复习要点

数据结构复习要点

A—熟练掌握B—理解C—了解第一章:绪论1. 基本概念:包括数据的逻辑结构、数据的存储结构和数据的相关运算。

C四类数据组织结构:集合、线性表、树形、图状结构C数据的存储方式:顺序存储和链式存储。

B2.算法和分析算法的特征、时间复杂度的分析和常见的时间复杂度增长率排序、空间复杂度B本章重点:分析算法时间复杂度例1. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的D例2. 以下那一个术语与数据的存储结构无关?()A.栈 B. 哈希表 C. 线索树 D. 双向链表A.例3..求下段程序的时间复杂度:void mergesort(int i, int j){int m;if(i!=j){m=(i+j)/2;mergesort(i,m);mergesort(m+1,j);merge(i,j,m);}}其中mergesort()用于对数组a[n]归并排序,调用方式为mergesort(0,n-1);,merge()用于两个有序子序列的合并,是非递归函数,时间复杂度为。

解:分析得到的时间复杂度的递归关系:为merge()所需的时间,设为cn(c为常量)。

因此令,有有第二章:线性表1.线性表的基本运算:….. C2.线性表的顺序存储(利用静态数组或动态内存分配)。

相应的表示与操作 A3.线性表的链式存储。

相应的表示与操作。

包括循环链表、双向链表。

A4.顺序存储与链式存储的比较:基于时间的考虑--分别适用于静态的和动态的操作:比如静态查找和插入删除);基于空间的考虑-- ……. B这也适用于后面用两种方式存储的其他数据结构。

★本章重点:很熟悉顺序表,单链表、双链表,循环链表的基本操作;并学会在各种链表上进行一些算法设计(与基本操作类似的操作或组合),请仔细复习。

例4.假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。

自考数据结构重点知识

自考数据结构重点知识

第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。

·线性结构:一对一关系。

·线性结构:多对多关系。

·存储结构:是逻辑结构用计算机语言的实现。

·顺序存储结构:如数组。

·链式存储结构:如链表。

·索引存储结构:·稠密索引:每个结点都有索引项。

·稀疏索引:每组结点都有索引项。

·散列存储结构:如散列表。

·数据运算。

·对数据的操作。

定义在逻辑结构上,每种逻辑结构都有一个运算集合。

·常用的有:检索、插入、删除、更新、排序。

数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

·原子类型:由语言提供。

·结构类型:由用户借助于描述机制定义,是导出类型。

抽象数据类型ADT:·是抽象数据的组织和与之的操作。

相当于在概念层上描述问题。

·优点是将数据和操作封装在一起实现了信息隐藏。

程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。

算法取决于数据结构。

算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。

评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。

时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。

渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。

评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。

算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

(完整word版)大学数据结构期末知识点重点总结(考试专用)

(完整word版)大学数据结构期末知识点重点总结(考试专用)

第一章概论1。

数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算2。

数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R)结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系3.数据类型a。

基本数据类型整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b。

复合数据类型复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)5。

四种基本存储映射方法:顺序、链接、索引、散列6。

算法的特性:通用性、有效性、确定性、有穷性7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化8.渐进算法分析a.大Ο分析法:上限,表明最坏情况b.Ω分析法:下限,表明最好情况c.Θ分析法:当上限和下限相同时,表明平均情况第二章线性表1.线性结构的基本特征a.集合中必存在唯一的一个“第一元素”b。

集合中必存在唯一的一个“最后元素"c.除最后元素之外,均有唯一的后继d。

除第一元素之外,均有唯一的前驱2.线性结构的基本特点:均匀性、有序性3。

顺序表a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度b。

线性表中任意元素的存储位置:Loc(ki)= Loc(k0)+ i * L(设每个元素需占用L个存储单元)c. 线性表的优缺点:优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样缺点:空间难以扩充d.检索:ASL=【Ο(1)】e。

数据结构基本知识点

数据结构基本知识点

第一章1、什么是数据结构①数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

②数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

③4类基本结构:⑴集合;⑵线性(一个前驱,一个后继)结构;⑶树形结构;⑷图状结构或网状结构。

2、数据结构的二元组表示:Data_Structure=(D,S)//D是数据元素的有限集,S是D上关系的有限集。

3、算法的5大特性:⑴有穷性;4、衡量算法的标准:时间复杂度和空间复杂度5、数据的逻辑结构分四类6、数据结构写出逻辑结构,反之。

第二章0、线性表的基本概念。

1、线性表的顺序存储的基本操作:Insert, E Is=n/2 Delete. E dl=(n-1)/22、线性表的顺序存储的特点:连续地址,随机查找。

3、线性表的链式存储的特点:地址不保证连续,顺序查找。

(1)重点1:结构类型P28Typedef struct LNode{ElemType data;Struct LNode *next;}LNode,*LinkList;(2)重点2:基本方法Status GetElem_L(LinkList L,int i,ElemType &e); Status ListInsert_L(LinkList &L,int i,ElemType e); Status ListDelete_L(LinkList &L,int i,ElemType &e); void CreateList_L(LinkList &L,int n);void Print(LinkList L){ LinkList p=L->next;(有头结点)if(!p) printf(“this link is empty!\n”);else{ printf(“%d,”,p->data);while(p->next){p=p->next; printf(“%d,”,p->data); } printf(“\n”);}}void CountNodes(LinkList L,int &nd){ nd=0;//LinkList p=L->next;(有头结点)if(!p) printf(“this link is empty!\n”);else{ nd++;//while(p->next){p=p->next; nd++;}//}}voidCountAve(LinkList L,int &av){ int n=0,s=0//av=0;LinkList p=L->next;(有头结点)if(!p) printf(“this link is empty!\n”);else{ s=s+p->data; n++;//while(p->next){p=p->next;s=s+p->data; n++;}// av=s/n;}return av;//}void PrintMax(LinkList L,){ int max;LinkList p=L->next;(有头结点)if(!p) printf(“this link is empty!\n”);else{ max=p->data;while(p->next){p=p->next; if(p->data>max) max=p->data;}//printf(“max=%d\n”,max);}}void DeletaMaxNode(LinkList L,){ int max;LinkList q,t;//q---记录p的前驱结点指针,t-----保存最大结点的前驱指针。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.仅供参考、2.3.什么是数据结构?P3由某一数据元素的集合以及该集合中所有数据元素之间的关系组成。

4.什么是数据,数据元素,数据项?P2-3数据是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中,被计算机程序识别和处理的符号的集合。

数据元素是数据的基本单位。

数据元素由数据项组成。

5.数据的基本操作?下标存与下标取6.线性结构,树型,图结构的特点?P3-4线性:1.每一个数据元素,除第一个元素外和最后一个元素外,其他每一个元素有且仅有一个直接前驱,一个直接后驱;2.第一个元素没有前驱,最后一个元素没有后驱;树型:除根以外,每一个结点都有一个处于该结点直接上层的结点。

图:每一个顶点可以与多个其他顶点相关联,各顶点之间的关系是任意的。

7.数据结构研究哪三方面内容,每一方面的内容的具体含义?P5逻辑结构:数据元素间的逻辑关系;存储表示:数据元素及其关系在计算机存储内的表示;运算:对数据元素施加的操作;8.顺序存储,链式存储,索引存储,散列存储方式的特点?P6主要用于内存的存储表示(顺序存储:用一维数组描述;链接存储:借助于程序语言的指针类型描述)主要用于内存的存储表示(索引存储:在储存结点信息的同时,建立附加的索引表;散列存储:根据结点的关键码计算出该结点的存储地址)9.什么是算法,为什么要进行算法分析,五大特点?P24-25一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。

1.输入:有0个或多个输入;2.输出:有一个或多个输出(处理结果);3.确定性:每步定义都是确切无歧义的;4.有穷性:算法应在执行有穷步后结束;5.能行性:每一条运算应足够基本;10.有序线性表与线性表的关系?P43有序线性表中的元素按照值的递增顺序排列。

11.单链表和双向链表的特点?P53 P69单链表长度可以很方便地进行扩充。

双向链表解决在链表中访问直接前驱和直接后驱的问题,每个结点都有两个链指针,一个指向结点的直接前驱,一个指向结点的直接后驱。

12.数组的基本运算13.栈的特点,队列的特点(用在哪些问题上)P88 P114栈的特点:后进先出(LIFO)。

用途:汇编处理程序中的句法识别和表达式计算,函数调用时的参数传递和函数值的返回;队列的特点:先进先出(FIFO, First In First Out)。

用途:排队问题,打印二项式(a+b)^i的系数,电路布线;14.什么是稀疏矩阵及其存储方式?P141矩阵的一种特殊情况,非零元素个数远远小于零元素的个数,而且这些元素分布没有规律。

采用一个三元组数组确定一个矩阵元素(只保存非零元素的下标和值,还要存储原矩阵的行数,列数和非零元素个数)15.广义表的表头表尾?P169广义表的第一个表元素即为该表的表头,除表头元素外其他表元素组成的表即为该表的表尾。

16.二叉树有多少种不同的形态?P189五种形态空一个结点左子树右子树互不相交的二叉树17.什么是满二叉树,完全二叉树?P190满二叉树:深度为k的满二叉树是有2^k-1个结点的二叉树,每一层结点都达到最大数。

完全二叉树:一颗具有n个结点的深度为k的二叉树,它的每一个结点都与高度为k的满二叉树中编号为1~n的结点一一对应。

18.二叉树的五大性质(前四性质的证明)P1901.在二叉树的第i 层( i≥1)最多有2i-1 个结点;2.深度为k ( k≥0 )的二叉树最少有k 个结点,最多有2k-1个结点;3.对任何一棵非空二叉树,如果其叶结点有n0 个, 度为2 的非叶结点有n2 个, 则有n0=n2+1;4.具有n (n≥0) 个结点的完全二叉树的最小深度为[log2(n+1)];5.如将一棵有n个结点的完全二叉树自顶向下,同一层自左向右连续给结点编号1, 2, …, n,则有以下关系:●若i = 1, 则i 无双亲●若i > 1, 则i 的双亲为 i/2●若2*i <= n, 则i 的左子女为2*i,●若2*i+1 <= n, 则i 的右子女为2*i+1●若i 为奇数, 且i != 1, 则其左兄弟为i-1, 若●若i 为偶数, 且i != n, 则其右兄弟为i+119.二叉树的存取方式有哪几种?P192数组存储;链表存储;广义表(详见书)20.HUFFMA树的构造P241-242带权路径长度最小的二叉树应是权值大的外结点离根结点最近的扩充二叉树。

(可参考离散P195)21.最小生成树的特点?不唯一性22.最大最小堆,堆的建立(例子)P235 P236-237优先级队列:每次出队列的是优先权最高的元素;用堆实现其存储表示,能够高效运作;关键码:假定在各个数据记录(或元素)中存在一个能够标识数据记录(或元素)的数据项,并将一句该数据项对数据进行组织,则称此数据项为关键码。

如果有一个关键码的集合K={k0,k1,k2…k(n-1)},把它的所有元素按完全二叉树的顺序存储方式存放在一个一维数组中,且满足k(i)<=k(2i+1)且k(i)<=k(2i+2) (或者k(i)>=k(2i+1)且k(i)>=k(2i+2) ) i=0,1,2…[(n-2)/2]则称此集合为最小堆(或最大堆)。

最小堆的建立:1.通过第一个构造函数建立一个空堆,其大小通过动态存储分配得到。

2.通过第二个构造函数复制一个记录数组并对其加以调整形成一个堆。

23.什么是散列表及其构造需解决哪两个问题?P280表示集合和字典的一种有效方法,提供一种完全不同的存储和搜索方式,通过将关键码映射到表中某个位置上来存储元素,然后根据关键码用同样的方式直接访问。

Address=Hash(key)问题:(1)对于给定的一个关键码集合,选择一个计算简单且地址分布比较均匀的散列函数,避免或尽量减少冲突;(2)拟定解决冲突的方案。

24.折半搜索用在什么情况,怎么样比较次数?P304有序顺序表搜索区间(或元素)比较大。

设n 个元素存放在一个有序顺序表中,若n = 2h-1,则描述折半搜索的判定树是高度为h 的满二叉树。

2h = n+1, h = log2(n+1)平均搜索长度:25.有向完全图与无向完全图? P347有n 个顶点的无向图有n(n-1)/2 条边, 则此图为无向完全图。

有n 个顶点的有向图有n(n-1) 条边, 则此图为有向完全图。

26.图的存储方式P351邻接矩阵P355邻接表邻接矩阵:首先将所有顶点的信息组织成一个顶点表,然后利用一个矩阵表示各顶点直接的领接关系设图A = (V, E) 是一个有n 个顶点的图, 图的邻接矩阵是一个二维数组A.Edge[n][n],定义:当大量元素都是零时使用邻接表:同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边(边结点),结点中有另一顶点的下标dest 和指针link。

对于带权图,边结点中还要保存该边的权值cost。

顶点表的第i 个顶点中保存该顶点的数据,以及它对应边链表的头指针adj。

27.图的广度优先搜索,与深度优先搜索?P364深度:在访问图中某一起始顶点v 后, 由v 出发, 访问它的任一邻接顶点w1; 再从w1 出发, 访问与w1邻接但还没有访问过的顶点w2; 然后再从w2 出发, 进行类似的访问, …如此进行下去, 直至到达所有的邻接顶点都被访问过的顶点u 为止。

接着, 退回一步, 退到前一次刚访问过的顶点, 看是否还有其它没有被访问的邻接顶点。

如果有, 则访问此顶点, 之后再从此顶点出发, 进行与前述类似的访问; 如果没有, 就再退回一步进行搜索。

重复上述过程, 直到连通图中所有顶点都被访问过为止。

广度:在访问了起始顶点v 之后, 由v 出发, 依次访问v 的各个未被访问过的邻接顶点w1, w2, …, wt, 然后再顺序访问w1, w2, …, wt 的所有还未被访问过的邻接顶点。

再从这些访问过的顶点出发,再访问它们的所有还未被访问过的邻接顶点,…如此做下去,直到图中所有顶点都被访问到为止。

广度优先搜索是一种分层的搜索过程, 每向前走一步可能访问一批顶点, 不像深度优先搜索那样有往回退的情况。

因此, 广度优先搜索不是一个递归的过程。

28.什么是AOV,什么是关键路径?P383可以用有向图表示一个工程。

在这种有向图中,用顶点表示活动,用有向边<Vi, Vj>表示活动Vi 必须先于活动Vj 进行。

这种有向图叫做顶点表示活动的AOV网络在AOV 网络中不能出现有向回路, 即有向环。

如果出现了有向环,则意味着某项活动应以自己作为先决条件。

因此,对给定的AOV网络,必须先判断它是否存在有向环。

完成整个工程所需的时间取决于从源点到汇点的最长路径长度, 即在这条路径上所有活动的持续时间之和。

这条路径长度最长的路径就叫做关键路径。

29.五大类排序?P401 插入排序P404希尔排序P405快速排序P413选择排序冒泡:设待排序元素序列中的元素个数为n。

最多作n-1 趟,i = 1, 2, , n-1。

在第i 趟中从后向前,j = n-1, n-2, , i,顺次两两比较V[j-1].key和V[j].key。

如果发生逆序,则交换V[j-1]和V[j]。

插入:每步将一个待排序的元素,按其排序码大小,插入到前面已经排好序的一组元素的适当位置上, 直到元素全部插入为止。

希尔:设待排序元素序列有n 个元素, 首先取一个整数gap < n 作为间隔,将全部元素分为gap 个子序列,所有距离为gap 的元素放在同一个子序列中,在每一个子序列中分别施行直接插入排序。

快速:任取待排序元素序列中的某个元素(例如取第一个元素) 作为基准,按照该元素的排序码大小,将整个元素序列划分为左右两个子序列:◆左侧子序列中所有元素的排序码都小于或等于基准元素的排序码◆右侧子序列中所有元素的排序码都大于基准元素的排序码基准元素则排在这两个子序列中间(这也是该元素最终应安放的位置)。

然后分别对这两个子序列重复施行上述方法,直到所有的元素都排在相应位置上为止。

选择:每一趟(例如第i 趟, i = 0, 1, …, n-2) 在后面n-i 个待排序元素中选出排序码最小的元素,作为有序元素序列的第i 个元素。

待到第n-2 趟作完,待排序元素只剩下1个, 就不用再选了。

30.证明题(16)二叉树前四性质31.应用题排序栈堆32.编程题前四章{数组;链表(节点查找,删除,排序,删除)}。

相关文档
最新文档