拓扑排序·一分析:
此题就是求一个有向图中是否存在环。 如存在环则输出”Wrong”, 若不存在环, 说明课程安排的合理,输出”Correct”。
题中的提示说的已经十分清楚了。总的来说就是:
① 找出入度为0的点(说明该点没有前驱),把该点放入集合T中。 把所有从该点出发的边都删除;② 遍历剩余的点, 找出入度为0 的点, 重复①操作。 ③直到不存在入度为0的点。 结束。如果此时集合T中...
分类:
编程语言 时间:
2015-06-18 15:28:14
阅读次数:
230
拓扑排序·一分析: 此题就是求一个有向图中是否存在环。 如存在环则输出"Wrong", 若不存在环, 说明课程安排的合理,输出"Correct"。题中的提示说的已经十分清楚了。 总的来说就是: ① 找出入度为0的点(说明该点没有前驱),把该点放入集合T中。把所有从该点出发的边都删除; ② 遍历剩余的...
分类:
编程语言 时间:
2015-06-18 15:09:35
阅读次数:
242
假设树的节点定义如下,查找一个指定值的前驱以及后继节点。如果树中没有找到指定值,则返回它所在区间的边界值。
struct
Node
{
int
key;
Node *left,*right ;
};
下面是实现此操作的算法,采用递归:
输入: 根节点, 键值
输出: 前驱节点,后继节点
1. If root is NUL...
分类:
其他好文 时间:
2015-06-16 01:22:37
阅读次数:
161
1、从无头单链表中删除节点
一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个也不是最后一个节点)。将该节点删除。
A——>B——>C——>D =====》 A——>C——>D
问题解析:由于只能单向遍历,故与删除B节点,无法得知B的前驱A,即无法像普通删除中那样让A的next指向C;
这里有个技巧,将C当做B,而B复制成C,则删除C节点即可...
分类:
其他好文 时间:
2015-06-13 17:13:38
阅读次数:
175
双向循环链表,先来说说双向链表,双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.而循环链表之前也有说过,单链表中就是让最后一个结点的指针指向第一个结点就能构成一个循环链表,这...
分类:
编程语言 时间:
2015-06-07 21:26:16
阅读次数:
243
一. 插入排序1. 直接插入排序/* 直接插入排序 */void insertSort(int a[], int n){ int i,j; for (i=2;i<=n;i++) // 依次将a[i]插入到前面已排序序列 { if (a[i]<a[i-1]) // 若a[i]小于其前驱,才需将a[i....
分类:
编程语言 时间:
2015-06-07 10:53:01
阅读次数:
270
第三章线性表:零个或多个数据元素的有限序列。若将线性表标记为(a1,a2,...ai-1,ai,ai+1,...,an),当i=1,2,...n-1时,ai有且仅有一个直接后继,当i=2,3,...,n时,ai有且仅有一个直接前驱。线性表的抽象数据类型:《大话数据结构》中是C语言版,这里是java版...
分类:
其他好文 时间:
2015-06-06 09:03:47
阅读次数:
91
图是一种比线性表和树稍微复杂的数据结构,相比线性表的前驱后继和树的层次关系,图中任意两个元素之间都有可能存在关系。
图由非空的顶点集合和一个描述顶点之间关系的集合组成,记为 G = (V, E)。可分为 无向图 和 有向图。n个顶点的无向图中,如果任意两个顶点之间有且只有一条边,总的边数为 n(n-1)/2,这样的图称为完全图;n个顶点的有向图中,如果任意两个顶点之间有且只有一条边,总的边数为 ...
分类:
其他好文 时间:
2015-06-04 11:49:42
阅读次数:
148
题目:输出n!中素数因数的个数。分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解就可以。 传统筛法是利用每一个素数,筛掉自己的整数倍; 欧拉筛法是利用当前计算出的全部素数,乘以当前数字筛数; 所以每一个前驱的素椅子个数一定比当前数的素因子个数少一个。说明:重新用了...
分类:
其他好文 时间:
2015-06-02 12:39:51
阅读次数:
114