电脑删除了软件,可是360软件管家里面还有,再删除就出现英文因为你把软件的相关文件删除掉了,但是并没有卸载,(注意:删除和卸载是两个不同的概念) 所以你在360那里还是可以看到这个
图的深度优先遍历和广度优先遍历 c编程
求一个C语言编程,图的遍历,深度优先和广度优先搜索的程序。要浅显易懂的~~~~
给你一个作为参考吧 #include用C语言实现 图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。
/*
程序1:邻接表的dfs,bfs
其中n是点的个数,m是边的个数,你需要输入m条有向边,如果要无向只需要反过来多加一遍即可。
*/
#include
#include
#defineMAXM100000
#defineMAXN10000
intnext[MAXM],first[MAXN],en[MAXM],n,m,flag[MAXN],pd,dl[MAXN],head,tail;
voidinput_data()
{
scanf("%d%d",&n,&m);
inti,x,y;
for(i=1;i<=m;i++)
{
intx,y;
scanf("%d%d",&x,&y);
next[i]=first[x];
first[x]=i;
en[i]=y;
}
}
voidpre()
{
memset(flag,0,sizeof(flag));
pd=0;
}
voiddfs(intx)
{
flag[x]=1;
if(!pd)
{
pd=1;
printf("%d",x);
}else
printf("%d",x);
intp=first[x];
while(p!=0)
{
inty=en[p];
if(!flag[y])dfs(y);
p=next[p];
}
}
voidbfs(intk)
{
head=0;tail=1;
flag[k]=1;dl[1]=k;
while(head{
intx=dl[++head];
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
intp=first[x];
while(p!=0)
{
inty=en[p];
if(!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
p=next[p];
}
}
}
intmain()
{
input_data();//读入图信息。
pre();//初始化
printf("图的深度优先遍历结果:");
inti;
for(i=1;i<=n;i++)//对整张图进行dfs;加这个for主要是为了防止不多个子图的情况
if(!flag[i])
dfs(i);
printf("\n-------------------------------------------------------------\n");
pre();//初始化
printf("图的广度优先遍历结果为:");
for(i=1;i<=n;i++)
if(!flag[i])
bfs(i);
printf("\n----------------------end------------------------------------\n");
return0;
}
/*
程序2:邻接矩阵
图的广度优先遍历和深度优先遍历
*/
#include
#include
#defineMAXN1000
intn,m,w[MAXN][MAXN],flag[MAXN],pd,dl[MAXN];
voidinput_data()
{
scanf("%d%d",&n,&m);
inti;
for(i=1;i<=m;i++)
{
intx,y;
scanf("%d%d",&x,&y);
w[x][0]++;
w[x][w[x][0]]=y;
}
}
voidpre()
{
memset(flag,0,sizeof(flag));
pd=0;
}
voiddfs(intx)
{
flag[x]=1;
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
inti;
for(i=1;i<=w[x][0];i++)
{
inty=w[x][i];
if(!flag[y])dfs(y);
}
}
voidbfs(intt)
{
inthead=0,tail=1;
dl[1]=t;flag[t]=1;
while(head{
intx=dl[++head];
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
inti;
for(i=1;i<=w[x][0];i++)
{
inty=w[x][i];
if(!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
}
}
}
intmain()
{
input_data();
printf("图的深度优先遍历结果:");
pre();
inti;
for(i=1;i<=n;i++)
if(!flag[i])
dfs(i);
printf("\n---------------------------------------------------------------\n");
printf("图的广度优先遍历结果:");
pre();
for(i=1;i<=n;i++)
if(!flag[i])
bfs(i);
printf("\n-----------------------------end--------------------------------\n");
return0;
}
如何写 图的深度优先和广度优先遍历的C程序。
深度优先遍历可以用递归写,访问跟节点,然后递归遍历根节点的各个子树,注意是遍历子树不是访问孩子节点 广度优先遍历可以用队列,访问根节点,然后把根节点的各个孩子节点放入队列,每次访问一个节点之后,访问队头节点,把那个节点的儿子节点继续放入队列什么是图的深度优先遍历?什么是图的广度优先遍历?
深度优先,就是先遍历它的一个邻节点,这个节点的邻节点。。。然后才遍历其他的邻节点 广度优先,就是先把它所有的邻节点都遍历完以后,再遍历它每个邻节点的邻节点 深度优先遍历(Depth-First Traversal) 1.图的深度优先遍历的递归定义 假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另c#)图的深度优先搜索和广度优先搜索算法的实现
#include "exam8-2.cpp" void BFS(ALGraph *G,int v) { ArcNode *p; int queue[MAXV],front=0,rear=0; //定义循环队列并初始化 int visited[MAXV]; //定义存放结点的访问标志的数组 int w,i; for (i=0;i相关文章
- 详细阅读
-
零基础的小白学那个编程语言,最容易详细阅读
零基础入门学习什么编程语言比较好如果你想学习编程,虽然选择第一门编程语言与你想用它来做什么最终达到什么目的有很大的关系,但是事实上某些编程语言的确比其他语言要好学。
-
C语言编程,详见补充详细阅读
关于C语言编程 具体见补充。首先指出你程序不合理的地方,n只要输入一次即可,while(scanf("%d%*c",&n)!=EOF)这句改为两行:(你的程序提交上去AC了?有点点怀疑...)) scanf("%d
-
迷你世界怎么利用编程解除时间限制详细阅读
迷你世界时间限制怎么解除您好,很高兴为您解答。迷你世界解除时间限制的唯一方法就是实名认证,也就是说满18岁才可以取消时间限制哦。希望对你有帮助!【摘要】 迷你世界时间
-
怎样0基础自学编程?就是达到一般公详细阅读
怎么才能成为一个合格的程序猿?作为一个合格的程序员,首先需要做到以下几点:1,拥有基础的编程算法能力。2,具有较好的编程格式习惯。3,在编程时有耐心,有毅力。程序员是一个比较理
-
编程读入三个整数a,b,c,然后输出表详细阅读
C++简单编程,输入三个整数a、b、c的值, 输出表达式:b2-4ac的值。#include "iostream.h" void main() { int a,b,c;//定义三个变量分别用于存放输入的整数 int y;//存放运算结果
-
半路转学软件编程去湖南众智互联网详细阅读
很多人说互联网前景好,那个湖南众智互联网学院的软件开发以后前景好不?好就业不?很多人是互联网的前景非常好湖南众智互联网学院的软件开发以后的前景是很多人说互联网的前景非
-
西门子系统808D铣床圆形打孔循环编详细阅读
西门子数控车床808d如何编程?一、以N95这个循环程序为例:程序步骤:
T1D*
G0X42Z5
(描写工件)
G1X0
Z0
G3X24.25Z-7CR=14
G1X32Z-15
W-10
G2W-18CR=15
G1W-5
X34
Z-58
退出程序二 -
信息技术会考操作题photon已经做完详细阅读
信息技术学业水平考试步骤错了会不会影响成绩?不会,这种考试一是看你的最终结果,最终结果相同应该就能获得分数,步骤错了也分步骤顺序错了和步骤的具体操作错了,顺序错了不会有影
-
学编程用什么软件好详细阅读
学习编程,用什么编程软件?C语言编译器可以分为两类,一是桌面操作系统,二是嵌入式系统。桌面操作系统包括:Visual C++、GCC 以及 LLVM Clang ,Visual C++只能用于 Windows 操作系