永发信息网

在线急求熟悉图的两种常用的存储结构,邻接矩阵和邻接表。

答案:2  悬赏:40  手机版
解决时间 2021-04-01 20:21
在线急求熟悉图的两种常用的存储结构,邻接矩阵和邻接表。
最佳答案
#include
#include
#define NULL 0
#define maxvernum 100
typedef struct node
{
int adjvex;
struct node *next;
}nodetype;
typedef struct frontnode
{
int data;
struct node *next;
}frontnodetype;
frontnodetype adjlist[maxvernum];

void main()
{
void bfs(frontnodetype g[],int v,int c[]);
void travelgraph(frontnodetype g[],int n);
frontnodetype adjlist[6];
int i,j,m;
for(i=1;i<=5;i++)
{
adjlist[i].data=i;
adjlist[i].next=NULL;
}
for(j=1;j<=5;j++)
{
printf("进入第%d次循环\n",j);
printf("开始输入前请输入一个不为0的m值以便输入\n");
scanf("%d",&m);
while(m!=0)
{
int x;
printf("请输入结点序号(x=0表示后面没有结点):\n");
if(x!=0)
{
scanf("%d",&x);
nodetype *p;
p=(nodetype *)malloc(sizeof(nodetype));
p->adjvex=x;p->next=NULL;
p->next=adjlist[j].next;
adjlist[j].next=p;
}
else break;
printf("是否停止?(m为0时停止输入,m为1时继续输入。)\n");
scanf("%d",&m);
}
}
printf("广度优先搜索序列为:\n");
travelgraph(adjlist,5);
}

void bfs(frontnodetype g[],int v,int c[])
{
int q[6],r=0,f=0;
nodetype *p;
c[v]=1;
printf("%d\n",v);
q[0]=v;
whille(f<=r)
{
v=q[f++];
p=g[v].next;
while(p!=NNLL)
{
v=p->adjvex;
if(c[v]==0)
{
c[v]=1;
printf("%d\n",v);
}
p=p->next;
}
}
}

void travelgraph(frontnodetype g[],int n)
{
int v;
int c[6];
for(v=1;v<=n;v++)
c[v]=0;
for(v=1;v<=n;v++)
if(c[v]==0)
dfs(g,v,c);

}追问我要的是深度啊!!!这个错了追答#include"stdio.h"
#include"stdlib.h"

#define MaxVertexNum 50 //定义最大顶点数
#define TRUE 1
#define FALSE 0
typedef struct node//边表结点
{
int adjvex;
struct node *next;
}ArcNode;
typedef struct Vertexnode//顶点表结点
{
char vertex;
ArcNode *firstedge; //边表头指针
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum]; //AdjList是邻接表类型
typedef struct {
AdjList adjlist; //邻接表
int n,e; //图中当前顶点数和边数
} ALGraph; //图类型

//建立图的邻接表
void CreatALGraph(ALGraph *G)
{
int i,j,k;
int a;
ArcNode *s; //定义边表结点
printf("Input VertexNum(n) and EdgesNum(e): ");
scanf("%d,%d",&G->n,&G->e); //读入顶点数和边数

printf("Input Vertex string:");
for(i=0;in;i++)
{
scanf("%d",&a);
G->adjlist[i].vertex=a;
G->adjlist[i].firstedge=NULL;
}
printf("Input edges,Creat Adjacency List\n");
for(k=0;ke;k++)
{
scanf("%d,%d",&i,&j);
s=(ArcNode *)malloc(sizeof(ArcNode));
s->adjvex=j-1;
s->next=G->adjlist[i-1].firstedge;
G->adjlist[i-1].firstedge=s; //将新结点*S插入顶点Vi的边表头部
s=(ArcNode *)malloc(sizeof(ArcNode));
s->adjvex=i-1; //邻接点序号为i
s->next=G->adjlist[j-1].firstedge;
G->adjlist[j-1].firstedge=s;
}
}

int visited[MaxVertexNum];
//DFS:深度优先遍历的递归算法
void DFSM(ALGraph *G,int i)
{
ArcNode *p;
printf("%d",G->adjlist[i].vertex);
visited[i]=TRUE; //标记Vi已访问
p=G->adjlist[i].firstedge;
while(p!=NULL)
{
if(! visited[p->adjvex])
DFSM(G,p->adjvex);
p=p->next;
}
}
void DFS(ALGraph *G)
{
int i;
for(i=0;in;i++)
visited[i]=FALSE;
for(i=0;in;i++)
if(!visited[i])
DFSM(G,i);
}
//主函数
void main()
{
ALGraph *G;
G=(ALGraph *)malloc(sizeof(ALGraph));
CreatALGraph(G);
printf("Print Graph DFS: ");
DFS(G);
printf("\n");
}
全部回答
杭昕,这是命。追问大姐!!!!你用不用上turth name
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
顺德区晋丰驾驶培训公司地址在哪,我要去那里
我今年要去当兵服役了,怎样可以进入武警体工
欢乐颂里41万的汽车音响是什么鬼,盘点最知名
好看民国电视剧!!!
如何清除SQLserver日志
阳光下做人,风雨中做事.出自哪里
He has turned a famous writer还是 He has b
为什么有些男人,宁愿开闲车,也不回家
(1/2)韩国首尔圣乐教会庇哩亚学院金箕东
合同上30天怎么算
学校想买320只饭盒,每只饭盒9元,商家以“买
静压桩荷载和承载力一样不
今天脚崴了,挺严重的都快不能动了,应该怎么
为什么我每次去理发都把我鬓角减了,男17
凤岗二中2016_2017半期考试成绩物理
推荐资讯
2018年妈妈咪呀海选什么时候报名,我特别想去
律动琴行(东窑街)地址好找么,我有些事要过去
试论诚实信用原则在民事诉讼中的适用
人事工作都包括哪些?
甲寅年是哪一年
我想问下,为什么很多人都说女孩子内衣要穿好
建设银行所谓的“一级分行范围内”是什么意思
把一四七十十三十六十九这七个数字填入图中七
亲们,考茱莉亚音乐学院需要什么条件吗
地震作用组合框架柱轴向压力设计者如何计算
脸上死肉能恢复吗,有什么方法
韩玉逍是哪里人?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?