2013年新疆维吾尔自治区数据库入门加强
1、本题应使用深度优先遍历,从主调函数进入dfs(v)时 ,开始记数,若退出dfs()前,已访问完有向图的全部顶点(设为n个),则有向图有根,v为根结点。将n个顶点从1到n编号,各调用一次dfs()过程,就可以求出全部的根结点。题中有向图的邻接表存储结构、记顶点个数的变量、以及访问标记数组等均设计为全局变量。建立有向图g的邻接表存储结构参见上面第2题,这里只给出判断有向图是否有根的算法。
int num=0, visited[]=0 //num记访问顶点个数,访问数组visited初始化。
const n=用户定义的顶点数;
AdjList g ; //用邻接表作存储结构的有向图g。
void dfs(v)
{visited [v]=1; num++; //访问的顶点数+1
if (num==n) {printf(“%d是有向图的根。\n”,v); num=0;}//if
p=g[v].firstarc;
while (p)
{if (visied[p->adjvex]==0) dfs (p->adjvex);
p=p->next;} //while
visited[v]=0; num--; //恢复顶点v
}//dfs
void JudgeRoot()
//判断有向图是否有根,有根则输出之。
{static int i ;
for (i=1;i<=n;i++ ) //从每个顶点出发,调用dfs()各一次。
{num=0; visited[1..n]=0; dfs(i); }
}// JudgeRoot
算法中打印根时,输出顶点在邻接表中的序号(下标),若要输出顶点信息,可使用g[i].vertex。
2、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不能采用常规的二层循环的查找。可以先从右上角(i=a,j=d)元素与x比较,只有三种情况:一是A[i,j]>x, 这情况下向j 小的方向继续查找;二是A[i,j]<x,下步应向i大的方向查找;三是A[i,j]=x,查找成功。否则,若下标已超出范围,则查找失败。
void search(datatype A[ ][ ], int a,b,c,d, datatype x)
//n*m矩阵A,行下标从a到b,列下标从c到d,本算法查找x是否在矩阵A中.
{i=a; j=d; flag=0; //flag是成功查到x的标志
while(i<=b && j>=c)
if(A[i][j]==x) {flag=1;break;}
else if (A[i][j]>x) j--; else i++;
if(flag) printf(“A[%d][%d]=%d”,i,j,x); //假定x为整型.
else printf(“矩阵A中无%d 元素”,x);
}算法search结束。
[算法讨论]算法中查找x的路线从右上角开始,向下(当x>A[i,j])或向左(当x<A[i,j])。向下最多是m,向左最多是n。最佳情况是在右上角比较一次成功,最差是在左下角(A[b,c]),比较m+n次,故算法最差时间复杂度是O(m+n)。
3、设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。
4、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在
2014年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2014年新疆维吾尔自治区数据库入门加强 1、证明由二叉树的中序序列和后序序列,也可以唯一确定一...
2014年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2014年新疆维吾尔自治区数据库入门加强 1、证明由二叉树的中序序列和后序序列,也可以唯一确定一...
2014年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2014年新疆维吾尔自治区数据库入门加强 1、证明由二叉树的中序序列和后序序列,也可以唯一确定一...
2014新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2014新疆维吾尔自治区数据库入门加强 1、假设以 I 和 O 分别表示入栈和出栈操作。栈的初态和...
2014年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2014年新疆维吾尔自治区数据库入门加强 1、请编写一个判别给定二叉树是否为二叉排序树的算法,设...
2015年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2015年新疆维吾尔自治区数据库入门加强 1、 我们可用 “破圈法” 求解带权连通无向图的一棵...
2015年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2015年新疆维吾尔自治区数据库入门加强 1、 我们可用 “破圈法” 求解带权连通无向图的一棵...
2015新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2015新疆维吾尔自治区数据库入门加强 1 、 (1)p->rchild (2)p->lchild (3)p->lchild (4)...
2015新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2015新疆维吾尔自治区数据库入门加强 1 、 (1)p->rchild (2)p->lchild (3)p->lchild (4)...
2012年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2012年新疆维吾尔自治区数据库入门加强 1、二叉树的层次遍历序列的第一个结点是二叉树的根。...
2012年新疆维吾尔自治区数据库入门加强_韩语学习_外语学习_教育专区。2012年新疆维吾尔自治区数据库入门加强 1、 二叉树的层次遍历序列的第一个结点是二叉树的根。...

我要评论