数据结构课程设计 图的应用 内容:1、创建AOE网用只保存出边的邻接表表示的存储结构。

图的应用
内容:1、创建AOE网用只保存出边的邻接表表示的存储结构。
2、求关键路径。
界面要求: 有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。
测试数据:
要求使用:1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。

这是我们的老师问的重点,考点。打印出有关准了!
第1章:
1.1:数据结构课程:算法设计的讨论中,各种逻辑结构的数据结构存储在计算机以及各种操作的任务。

1.2:数据是客观描述的东西数字字符以及所有的能量输入到计算机,由计算机可以接收各种集合的统称。

数据元素:一组数据的事情被称为是一个数据元素,这是基本的数据单元。

数据输入:数据元素都具有独立意义的,不可分割的单位最低识别。

数据结构的概念包含三个区域:操作的数据,数据的存储结构数据的逻辑结构。

1.3逻辑结构的数据指的是代表在此集合中定义的数据元素的集合的数据元素之间的逻辑关系,关系数,该数据结构可以分为三种类型:线性结构的树结构中,和图。

1.4:的物理结构被称为在作为数据存储结构,也被称为数据元素和它们之间的关系,在计算机存储。

数据存储结构,有两种基本形式:顺序存储结构和链存储结构。

2.1:算法:一个算法是由有限的规则集,以确定一个特定类型的操作序列中所出现的问题的一个解决办法,其规则。该算法的规则需要满足以下五个特点:

输入 - 零个或多个输入数据算法。
输出 - 具有一个或多个输出数据的,具有特定的关系,与输入数据的算法。
差 - 算法必须结束后的执行和差一步。
确定性 - 算法的每一步必须明确和毫不含糊的意思。
可行性 - 算法,每一步都必须是基本的,他们的原则是,能准确地使用笔和纸做有限的时间就可以完成。
差的两个最重要的特征算法的可行性。

2.2:算法和数据结构:上述数据结构的算法建立了描述的数据结构的操作需要的算法。

算法设计依赖于数据的逻辑结构,算法相关的数据结构存储结构。

2.3:算法设计应该满足以下五个目标:

正确的算法应该是准确的,以满足应用程序的问题,这是算法设计的基本目标。
鲁棒性:即使输入的数据是不恰当的,该算法还可以做出相应的处理,不会造成不可控制的结果
时间效率高的算法的执行时间越短,时间效率越高。果实。
高空间效率:占用更少的存储空间,当执行算法时,空间的效率就越高。
可读性:可读性的算法,有利于人们的理解的算法。
2.4:时效性,复杂性度量算法39(课本)。

2.5:递归定义:所定义的,直接或间接地,用它自己的一个概念。递归定义两个条件:

至少一个初始定义的非递归的,如1! = 1。
已知函数值逐渐递归计算未知函数的值,如第(n-1)!定义为n! 。
章:线性表
1.1线性形式:线性表是由n个(> = 0)类型相同的数据元素a0的,α1,α2,... AN-1,构成的有限序列,记为:LinearList =(A0,A1,A2,...,1)

元件ai是一个整数,浮点数字,字符,对象。 n是数的线性形式的元素的长度的线性形式。如果n = 0,然后空表的LinearList。如果n> 0,则A0毫无前兆的元素,1没有继任元素,AI(0 <I <N-1),只有一个直接前体元素AI-1,和一个直接后继元素艾+1。

1.2线性表的顺序存储在一组连续的内存单元,用于存储物理内存的存储顺序线性表的逻辑顺序线性表元素的数据元素的顺序。

线性表中的数据元素的数据类型的数据集所占用的每个元素C字节地址是A0存储

禄(A0),AI禄( ai)条,该存储的地址是:的LOC(AI)=(a0)的的Loc + * c的

阵列被顺序存储在随机存取存储器的结构,该结构中占有一组由下标识别元件的连续的存储单元,单元地址的下标是一个线性函数。

1.3:插入和删除操作的表,你要移动的数据元素的顺序。移动平均数的数据表长度的一半。 (课本第50页)

1.4:线性连锁店特定的地址分散的存储单元中存储的数据元素,数据元素的逻辑上相邻的物理位置,不一定相邻,必须使用额外的信息表示的数据元素之间的顺序关系。

它包括两个领域:数据字段和地址字段。通常会成为节点。 (课本第55和第56页)

1.5单链表(课本56)

单链表的遍历节点 P =头,而(p! = NULL){P接入节点,P = p.next;}

单链表的插入和删除操作是非常简单的,只是改变了节点之间的链接,而无需移动数据元素。

单链表插入操作:1)空表中插入/头插入2)中间插入/尾插入

(头== NULL)节点 q =,新节点(X);

{头=新的节点(X)= p.next q.next

}其他{P下= Q;

节点 Q =的新:节点(X);干预或尾部插入不会改变,单表

q.next头指针head =头;

头= Q;

}

单链表,删除操作如下:

头删除:头=头。下;
中/尾Delete(删除):(p??.next!= NULL){p.next p.next.next;}
循环单链表:如果一个单链表的最后下一个链中的节点保存单链表头指针头值的单链表成为一个环状结构,称为循环单链表。 (课本67)

如果后面是一个单链表尾指针,执行(rear.next =头;)语句,从而使一个单链表的圆形单链表。当head.next ==头,圆形单链表是空的。

1.6:双链表的结构:双向链表的每个节点有两个链域,分别指向其前任和继任者节点,

当head.next == NULL双向链表是空的。

让,p是非洲一个点在一个双向链表节点的两端,建立了如下的关系:P = p.next.prev = p.prev.next。
双向链表的插入和删除:1)插入2)删除

Q =新DLinkNode(X); p.prev.next = p.next; BR />
q.prev = p.prev; q.next = P(p.next = NULL){

p.prev.next = Q p.prev Q;(p.next)上一个p.prev;}

循环双向链表:当head.next ==头head.prev ==头圆的双向链表是空的。

章:栈和队列
1.1栈:栈是一种特殊的线性表,插入和删除操作只允许一个结束行表。允许的操作的一端称为堆栈顶部的是不允许的操作在一端被称为堆栈的底部。堆栈顺序栈和链栈。

栈操作,将元素称为压入堆栈,删除元素的操作称为堆栈。元素的统称为一个空栈。

的堆叠顺序:后进先出法,最后叠出。 (75个问题)。

1.2:队列:队列是一种特殊的线性表,插入和删除操作的线性表的两端,分别。

要求入队的元素插入到队列中,允许入队尾的一端称为删除元素,让一个团队的一端称为对手。在队列中没有元素被称为空队列。队列是一个先入先出。

章:字符串
1.1:字符串是一种特殊的线性表,其特殊性是线性表的每个元素是一个字符。一个字符串,表示为:S =“s0s1s2 ... SN-1”,其中n> = 0,s是一个字符串的名字,一对序列的字符括在双引号s0s1s2 ...的sn-1是一个字符串值,SI(= 0,1,2,... n-1的)是一组特定的字符中的一个字符。被称为在一个字符串中的字符的数目的长度的字符串。

0长度的字符串称为空字符串

子串子组成的子序列,表示为“由一个或多个空格字符字符串的空白字符串。叫s的子串,任意连续字符的字符串,叫子主字符串的子串的ID是指在主字符串中的子字符串的第一个字符的序列号。

字符串比较:两字符串可以比较平等,同等规模的(子)两个字符串相等的充要条件是相同的两个字符串的长度(串),且每个对应的相同位置上的字符。
/>两个字符串的大小来确定的相应位置上的第一个字符的大小,字符比较顺序从头开始依次向后。对应的字符的位置都是一样的,当两个不同长度的字符串,较长的字符串定义比“大”。

章:数组和广义表
1.1:数组是一种数据结构,数据元素具有相同的数据类型的逻辑结构是一维数组。线性表,多维数组是一个线性延伸的表。

1.2:一维数组:顺序存储结构的一维数组。占用的的一组的一个一维阵列连续的存储单元。

集数组的第一个元素A0为LOC(A0),每个元素所占用的的?字节,艾禄元素的数组的存储地址的存储地址(AI ):LOC(AI)= LOC(A0)+ I * C

阵列的识别等元素,元素的线性函数地址标,下标可以唯一地标识一个元素的程序的时间是O(1),这样一个阵列的随机存取结构,这是最大的优点阵列。

1.3多维数组的遍历:有两种类型的订单:行主序和列主序列。
行主序:主序的行为,增量的访问数组元素的行,后访问的第i行的所有元素,然后访问第i行+1个元素同一行,列用柱增量访问数组元素。
A00,A01,... a0的第(n-1),A10,A11,... A1的第(n-1),...的(m- 1)0(M-1)1,...,(M-1)(N-1)

2)列主序星主序列,按列递增访问访问的第j列的所有元素的数组元素,然后进入第j +1列在同一列列的增量访问数组元素的元素。
多维数组的存储结构:多维数组是一结合以上的一维数组,有两个的组合。

静态多维数组的的序列存储结构:根据行和列的顺序存储的主序列的主序列。
行主顺序存储的元素,联合开展活动的地址是:LOC(AIJ)= LOC(A00)+(I * N + J)* C

存储在列主序时,LOC(AIJ)= LOC (A00)+(十*米+)* c的

动态多维数组的存储结构。
一个二维数组元素的地址是两个下标线性函数。要么存储结构,多维数组基于一维数组,因此只能在指定的值吗?两个访问操作,而不是插入和删除操作。

第六章:

树是非线性结构的数据元素(节点)之间的层次关系。拔根外结在树结构中,只有一个直接前体结可以是零到多个直接后继节点。根前体节点。
树是一组有限的N(N> = 0)一个节点(树中的元素通常被称为节点),N = 0的树称为空树; n> 0的大树下T;
/> _at_一个特殊的节点称为根节点,其后继节点,无前驱节点。

@在除了其他以外的根节点被划分成m个(m> = 0)一个相互交叉的集合T0,T1,T3 ......,TM-1,在每个集合钛(0 <= I <M)本身是一棵树,称为根的子树。
树的递归定义的。节点的基本单位是一棵大树,组成的一个子树,几棵树不相交的子树的树节点,每个节点在树的根的子树的树的数量。因此,树的节点,该节点的非线性结构之间的层次关系。

节点的前驱节点,即,相反,它的父节点的后继节点的节点称为子节点的树,只有根没有父节点,其他节点有且只有一个父节点。

具有相同的父节点之间的多个节点称为兄弟从根节点到它的父节点的祖先。通过所有大的节点的后代节点是指所有的孩子们的节点节点,和孩子的孩子。

节点节点有子树的树。度为0的节点的节点称为叶节点,也称为终端节点以外的树中的节点的叶节点被称为分支节点,也被称为非叶节点和非终端节点。的树度是指,在每个节点的度的最大值树。

节点级别的属性反应节点树的位置。公约的其他节点的父节点级别加1的水平层次结构的根节点。显然,同样的水平的兄弟姐妹。

树节点的树,树的高度或深度是最高水平。

让树中的x节点的父节点的Y字路口,的有序对(x,y)的被称为分支连接这两个节点,也称为边缘。

设(X0,X1,...,XK-1)是由树节点在一个序列中,点(xi,羲1)(0 <= <k-1个)侧是树木,以及该序列被称为路径从X0 XK-1的路径长度是在路径上的边的数目

定义的树,结子树T0,T1 .....,TM-1并没有秩序,可以交换位置,称为无序树,简称为树。节点的子树T0,T1 ... TM-1由左到右的顺序,不能交换位置,为一个有序的树,树说。

森林是一家集M(M> = 0)树独立彼此的树。森林与根节点成了树,它变得森林删除树的根节点。

二叉树的性质:如果水平根节点1,二叉树i层最多2个电源的i-1(> = 1)的一个节点。
二叉树性质:k个二进制树的高度,一个节点最多少2的第k个功率。
二叉树性质:设置一个二进制树的叶节点n0时,2度的节点n2的,n0时= n2的1。
一个完整的二进制树的高度为k,第k个功率减去一个节点的二进制树。完整二进制树,在每一层中的节点的数量达到最大值。连续编号公约根节点完整的二进制树节点编号为0,从根,由上到下,由左到右的典型数量。

一个有n个节点的二叉树的高度K表,如果每个节点的满二叉树的高度K序列号??N-1

节点一到一一对应,树二叉树是完全二叉树。

满二叉树是完全二叉树,完全二叉树是不一定是完整的二进制树。完整的二进位的1到k-1层的第k层的完整二进制树的不满,和该层的所有节点必须集中在该层上的左侧的一定位置。 BR />
二叉树的性质:完全二叉树的n个节点,其高度k = log2n +1

二叉树的绝对值的性质:一个完整??的二进制树, n个节点,节点是我

@如果i = 0,i为根节点,没有父节点,如果i> 0,那么我的父节点的序列号,[(我1)/ 2]。

@ 2I +1 <n然后我离开子节点数量2I +1,否则我没有左孩子。

@ 2I +2 <N,然后我右边的子节点数量2I +2,否则,我无权孩子。遍历一个二叉树遍历

按照一定的规则和二叉树访问二叉树节点,每个节点只访问一次。三阶

二叉树遍历

1:先根序的根节点,遍历左子树,遍历右子树。

2根序遍历左子树,访问右子树,遍历右子树。

3:后根序遍历左子树,遍历右子树,访问根结点。

第一根序遍历根节点的第一次访问;后根序遍历根节点的最后一次访问根序遍历,左子树的根节点访问节点之前,后根节点,该节点的子树的访问。

二叉树的插入和删除操作P147

二叉树水平穿越P149

练习P167 6-10,6-19

第七章

指定的收集和顶点组成的集合之间的关系图一个数据从侧面线条。顶点之间的关系变得边缘。图G词汇是G =(V,E),V是一组有限的顶点A,E是一组有限的边缘,V = {A | A是一组数据元素}

E = {(A,B)A,B到V}或E = { | AB属于V和路径,( A,B)},其中所述路径(A,B)从顶点A到B的单向路径,即路径(A??,B)是一个方向。

无向图中的东西没有边缘的方向,每条边的两个顶点乱乱的。

图中的边,每边两个顶点有序的方向说。

完整的图形数量已达上限图中的边。n个顶点的完全画报Kn的号码完全图Kn为n *(n-1个)/ 2的边缘的数目,以完全图的边缘的数目,Kn的N *(正1)。

子:设图G ==(V,E),G'=(V',E'),V'V和E'包含在E,则G “是G的一个子图,如果G'的一个子G.

连通图:无向图G,VI Vi和Vj的从顶点到Vj路径,被称为图G联通,任何对顶点Vi和Vj(Vi是不等于VJ)是联通的,则G是一个连通图。大大联通联通元件的非连通子图的所谓的图表。

强大的图形:从Vi到Vj的路径有一条小路,图中每对顶点Vi和Vj(六等于VJ)之间,也有一条线从Vi到Vj的路径,也有从Vi到Vj的路径,图中表示强连通图。极大强连通子图称为非强连通图,强连通的图形组件的身影。

图的遍历

遍历图是图G的任一顶点V,图中的线的边缘,达到和访问图中的所有顶点,每个顶点仅被访问一次。遍历图要考虑三个问题:

_at_指定遍历第一可能与多个顶点相邻的顶点

@“之间相邻顶点的访问顺序。

@循环的数字可能访问一个顶点可以按照访问一个顶点到顶点。

深度优先搜索

图的深度优先搜索策略是访问一个顶点v,然后找到V到另一个没有被访问的相邻的路径顶点w的访问,等等执行通过一个较长的路径到达最远的顶点,顶点v的邻接顶点都被访问,然后返回到以前访问的顶点,然后再寻找其他的访问路径。

图的深度优先搜索遍历算法P188

联通环无向图或树挂在树中,并成为叶,其他顶点称为分支点。图被称为连接的组件树在森林,树木森林。

树的循环,这样的树必须拥有环沉重的一面(否则他环路),如果任何一方的树去掉,变成森林,成为非联通图;树加一个缘,形成一个循环,而不是一棵树。P191

生成树和生成森林:

一个连接的有向图的生成树是一个很小的联通生成子图,其中包含了所有的原始图的顶点(N),足以构成一棵树的n-1个边。

非联通的无向图,连通图,组件生成的图表的形式在地图上生成森林
图生成图表或森林不仅从不同的顶点不同的行程不同的生成树或森林。
生成树,任何树木,只有任意两个顶点之间的路径

第八章

二进制搜索算法中描述的P206,P207

二叉排序树和它的发现:

二叉树的二叉排序树空树,或具有以下属性:

@每个节点都有一个关键字作为搜索的基础上,关键字的所有节点并不相互一致的。
>
@左子树的节点不为空,左子树节点的关键字是小于节点的关键字;

@%的左,右子树的节点是二进制排序树。

在二叉排序树的节点的值,求的值,算法描述如下:

@从根结点根节点,让p

关键字的值P节点,如果他们是平等的,然后找到成功;较小的值值的p的左子树继续寻找,如果该值值大,右边的p子树继续搜索。

重复前面的步骤,直到你找到成功或p是空的,如果p是空的,则搜索不成功。

/>练习8-6

IX直接插入排序算法描述:P228

冒泡排序算法的描述:P232

快速排序算法描述P233 / a>
直接选择排序算法P236

直接选择排序算法如下:

公共静态无效的selectSort(INT []表){
>
为(int i = 0; table.length-1; ??i + +){

诠释分钟= I;

(研究= I +1; J <table.length; J + +){

(表[J]表[分钟])

分钟= J; />
(min! = I){

诠释TEMP =表[I];

表[I] ==表[分钟]; BR />
表[分钟] =温度;

}

}

}

}

堆排序是完全二叉树的应用程序的完全二叉树的特点,充分利用一个选择排序。
/>堆的定义:设n个元素的数据序列{K0,K1,....海里-1}中,当且仅当满足下列关系

K1 <= k2i +1和き<= k2i +2 I = 0,1,2,3,...... [N / 2 -1]

KI> == k2i +1和ki> = 2I +2我= 0,1,2,3,...... [N/2-1],序列{K0,K1 ....... KN-1}称为最小最大堆或堆。最低(大)堆作为一个完整的二进制树的遍历序列的水平,任何节点关键字是小于或等于(大于或等于)的值,它的子节点关键字因此,根结点的值的最小值(大)。根据二叉树,完全二叉树的性质(0 <= n)的节点,如果有孩子,左孩子为2i +1个节点,右孩子为2i +2节点。

我希望能对您有所帮助。
温馨提示:答案为网友推荐,仅供参考
相似回答