c语言大神,求dfs代码。这里有abcdefg汉语拼音儿歌这几个字母,先序输出的代码!

图 C语言图的建立及BFS,DFS遍历 - 为程序员服务
为程序员服务
C语言图的建立及BFS,DFS遍历
#include &stdio.h&
#include &malloc.h&
#include &stdlib.h&
#define MAX 20
//图可以存储的最大节点数为20;
struct tnode
struct tnode *//指向下一个临节点
//存放邻节点在数组中的位置
struct node
//存放节点的值
struct tnode *//指向邻节点
struct picture
struct node nd[MAX];
//声明一个节点数组
//图中的节点数
//建立的图的类型
struct picture * createpicture();
int search(struct picture *p,int value);//查找value在nd数组中的位置
void bfs(struct picture * q,int i,int visit[]); //广度优先遍历
void dfs(struct picture * q,int i,int visit[]);//深度优先遍历
void traversedfs(struct picture *p);
void traversebfs(struct picture *p);
int main()
struct picture *p;
p=createpicture();
getchar();
printf(&现在将对图进行遍历,若使用广度优先遍历,请输入a,若使用深度优先遍历请输入b,清屏请输入c,退出请输入d:\n&);
scanf(&%c&,&a);
if(a=='a')
printf(&深度优先遍历如下:\n&);
traversebfs(p);
if(a=='b')
printf(&广度优先遍历如下:\n&);
traversedfs(p);
if(a=='c')
system(&cls&);
if(a=='d')
struct picture * createpicture()
int i,j,k,l;//l中存放返回的节点在数组中的位置
struct picture *p;
p=(struct picture *)malloc(sizeof(struct picture));
struct tnode *
printf(&请输入你要建立的图中的节点数以及图的类型(a表示无向图b表示有向图):\n&);
scanf(&%d %c&,&i,&a);
p-&count=i;
printf(&请依次输入各节点的值(每输完一个节点的值按回车结束):\n&);
for(i=0;i&p-&i++)
scanf(&%d&,&j);
p-&nd[i].valu=j;
p-&nd[i].link=NULL;
for(i=0;i&p-&i++)
printf(&输入与数据值为%d的节点相邻的节点的数据值(每输完一个节点的值按回车结束),若不再含有相邻的值请输入-1\n&,p-&nd[i].valu);
scanf(&%d&,&k);
l=search(p,k);
t=(struct tnode *)malloc(sizeof(struct tnode));
t-&data=l;
t-&next=p-&nd[i].
p-&nd[i].link=t;
printf(&无此数据值!\n&);
//getchar();
int search(struct picture *p,int value)
for(i=0;i&p-&i++)
if(value==p-&nd[i].valu)
return -1;
void traversedfs(struct picture *p)
int visit[MAX];//申明一个标志数组,将其初始值置为0,0表示该节点未被访问过,1表示该节点被访问过
for(i=0;i&p-&i++)
visit[i]=0;
for(i=0;i&p-&i++)
if(visit[i]==0)
dfs(p,i,visit);
//getchar();
void dfs(struct picture * q,int i,int visit[])//i表示数组的下标值visit的下标与p中的下标是一一对应的关系
struct tnode *
printf(&%d\n&,q-&nd[i].valu);
visit[i]=1;
w=q-&nd[i].
while(w!=NULL)
if(visit[w-&data]==0)
dfs(q,w-&data,visit);
void traversebfs(struct picture *p)
int visit[MAX];//申明一个标志数组,将其初始值置为0,0表示该节点未被访问过,1表示该节点被访问过
for(i=0;i&p-&i++)
visit[i]=0;
for(i=0;i&p-&i++)
if(visit[i]==0)
bfs(p,i,visit);
//getchar();
void bfs(struct picture * q,int i,int visit[])
struct tnode *w;
int a[MAX];//声明一个队列
visit[i]=1;
printf(&%d\n&,q-&nd[i].valu);
r++;//进行入队操作
while(f!=r)
f++;//岀队操作
w=q-&nd[v].
while(w!=NULL)
if(visit[w-&data]==0)
visit[w-&data]=1;
printf(&%d\n&,q-&nd[w-&data].valu);
您可能的代码
相关聚客文章
相关专栏文章&>&&>&&>&&>&最大流C语言用bfs与dfs实现代码 最大流ppt
最大流C语言用bfs与dfs实现代码 最大流ppt
上传大小:1.48MB
#include &iostream&
int c[20][20];
int f[20][20];
int b[20];
//保存找到的增广路径,记录路径上结点i的前驱结点。
//最大流量。
//假定:1是源点S;n是汇点T。
int min(int a, int b)
if (a & b)
//DFS找增广路径
bool findflow(int k)
{找结点k的后继结点i }
if (k == n)
{找到了一条增广路径}
for (i = 1; i &= i++) // to n do
if (b[i] == -1 &&(c[k][i] - f[k][i] & 0 || f[i][k] & 0)) //then
if (findflow(i))
//then exit(true);
}...展开收缩
综合评分:4.2(14位用户评分)
收藏((2))
所需积分:5
下载次数:41
审核通过送C币
创建者:boltnut
创建者:boltnut
创建者:boltnut
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
最大流C语言用bfs与dfs实现代码 最大流ppt
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
find_my_dream
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
求一段C语言代码:其功能是解决一个数学排列问题,求一段C语言代码:用C语言解决下面的这个排列问题,有七个字母:A,B,C,D,E,F,G.输出满足以下四个条件的排列的个数!1.A和B必须紧挨在一起;2.C和F之间必须夹着任意两个字母;3.G不能排在第一个或者最后一个位置上;4.D一定要在F和A之间(F和A之间不一定只有D这么一个字母,可以有多个)
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
代码: //1.A和B必须紧挨在一起;bool CheckAB(const char *pszData, int nDataLen){ for (int i = 0; i < nDataL i++) {
if (pszData[i] == 'A')
if (i != 0)
if (pszData[i-1] == 'B')
if (i != nDataLen-1)
if (pszData[i+1] == 'B')
} } }//2.C和F之间必须夹着任意两个字母;bool CheckCF(const char *pszData, int nDataLen){ for (int i = 0; i < nDataL i++) {
if (pszData[i] == 'C')
if (i >= 3)
if (pszData[i-3] == 'F')
if (i = nDataLen) {
// 检查符合要求并显示
if (Check(pszData, nDataLen))
DisplayA_G(pszData);
} } for (int i = nD i < nDataL i++) {
swapData(pszData[nDepth], pszData[i]);
Sort1(pszData, nDataLen, nDepth+1);
swapData(pszData[nDepth], pszData[i]); }} void SortA_G(void){ char szData[] = "ABCDEFG"; const int nDataLen = 7; Sort1(szData, nDataLen);} int _tmain(int argc, _TCHAR* argv[]){ SortA_G(); return 0;}
输出结果:0001
ABCDGFE0002
ABCGDFE0003
ABDCEGF0004
ABDCGEF0005
ABDFEGC0006
ABDFGEC0007
ABECDGF0008
ABECGDF0009
ABGCEDF0010
ABGCDEF0011
BACDGFE0012
BACGDFE0013
BADCEGF0014
BADCGEF0015
BADFEGC0016
BADFGEC0017
BAECDGF0018
BAECGDF0019
BAGCEDF0020
BAGCDEF0021
CEGFDBA0022
CEGFDAB0023
CGEFDAB0024
CGEFDBA0025
EBACDGF0026
EBACGDF0027
EABCDGF0028
EABCGDF0029
EFDGCBA0030
EFDGCAB0031
EFGDCBA0032
EFGDCAB0033
FDECGAB0034
FDECGBA0035
FDGCEAB0036
FDGCEBA0037
FDGCABE0038
FDGCBAE0039
FEDCGAB0040
FEDCGBA0041
FEGCDAB0042
FEGCDBA0043
FGDCEAB0044
FGDCEBA0045
FGDCABE0046
FGDCBAE0047
FGECDAB0048
FGECDBA请按任意键继续. . .
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 abcdefg拼音儿歌 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信