数据结构中图的两种存储结构和两种遍历_图的两种存储和遍历

2020-02-28 其他范文 下载本文

数据结构中图的两种存储结构和两种遍历由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“图的两种存储和遍历”。

邻接矩阵

#include

#include

typedef struct

{

int a[20][20];

int n;

int e;

}Graph;

int visit[20];

void DFS(Graph *p,int n)

{

int i;

printf(“%4d”,n);

visit[n]=1;

for(i=1;in;i++)

if(i!=n&&visit[i]==0&&p->a[n][i])DFS(p,i);

}

void BFS(Graph *p,int n)

{

int i,top=0,t;

int a[20];

printf(“%4d”,n);

visit[n]=1;

a[++top]=n;

while(top)

{

t=a[1];

for(i=1;i

a[i]=a[i+1];

top--;

for(i=1;in;i++)

if(p->a[t][i]&&visit[i]==0){

printf(“%4d”,i);visit[i]=1;

a[++top]=i;

}

}

}

int main()

{

int i,j,n,m;

Graph *p;

p=(Graph *)malloc(sizeof(Graph));

printf(“输入图的顶点数:”);scanf(“%d”,&p->n);

printf(“输入图的边数:”);scanf(“%d”,&p->e);

for(i=1;in;i++)

for(j=1;jn;j++)

p->a[i][j]=0;

printf(“输入图的每条边:n”);

for(i=1;ie;i++)

{

printf(“%d:”,i);

scanf(“%d%d”,&n,&m);

p->a[n][m]=1;

p->a[m][n]=1;

}

for(i=1;in;i++)

{

for(j=1;jn;j++)

printf(“%4d”,p->a[i][j]);

printf(“n”);

}

for(i=1;in;i++)

visit[i]=0;

printf(“DFS遍历:n”);

DFS(p,1);

printf(“n”);

for(i=1;in;i++)

visit[i]=0;

printf(“BFS遍历:n”);

BFS(p,1);

printf(“n”);

return 0;

}

邻接表 #include

#include

typedef struct node

{

int n;

struct node *next;

}Node;

typedef struct

{

int m;

Node *a;

}PP;

PP a[30];

int n,e,visit[30];

void Create()

{

int i,x,y;

Node *p;

printf(“输入图的顶点数和边数:”);scanf(“%d%d”,&n,&e);

for(i=1;i

{

a[i].m=i;

a[i].a=new Node;

a[i].a->next=NULL;}

printf(“输入图的边数:n”);for(i=1;i

{

printf(“%d: ”,i);

scanf(“%d%d”,&x,&y);p=new Node;

p->n=y;

p->next=a[x].a->next;a[x].a->next=p;

p=new Node;

p->n=x;

p->next=a[y].a->next;

a[y].a->next=p;

}

}

void DFS(int n)

{

Node *p;

visit[n]=1;

printf(“%d ”,n);

for(p=a[n].a->next;p;p=p->next)

if(visit[p->n]==0)

DFS(p->n);

}

void BFS(int n)

{

int i;

int aa[20],top=0;

Node *p;

aa[++top]=n;

while(top)

{

p=a[aa[1]].a->next;

for(i=1;i

aa[i]=aa[i+1];

top--;

for(;p;p=p->next)

if(visit[p->n]==0)

{

printf(“%d ”,p->n);

visit[p->n]=1;

aa[++top]=p->n;

}

}

}

int main()

{

int i;

Node *p;

Create();

for(i=1;i

} /* 8 11 1 2 1 8 2 7 2 6 7 4 4 6 4 3 3 6 3 5 8 5 6 8 */

图的两种存储结构及基本算法

一、图的邻接矩阵存储1.存储表示#definevexnum10typedefstruct{vextypevexs[vexnum];intarcs[vexnum][vexnum];}mgraph;2.建立无向图的邻接矩阵算法voidcreat(mgraph*g, int......

两种议论文结构

向你推荐两种易学易用的议论文结构范维胜一、对立比照式结构:推荐理由:这种结构体现你思维的辩证性,展示你论证力度的深刻性。结构解剖:一见钟情的开篇—— 主 体对 立 比 照—......

求职信的两种结构

求职信的两种结构按收信人的身分,求职信的结构可分为两种:1. 收信人是认识的 开首:建立共鸣:可回忆以往共事片段,或提及一、两件昔日趣事,让收信人记起你解释情况:既然大家曾相识,不......

议论文常用两种结构

议论文常用两种结构议论文论证,采取由浅入深,层层深入,步步推进的形式,即是纵式层进结构的体现,又称推进式结构。下面是小编为你带来的议论文常用两种结构,欢迎阅读。层层深入,步步......

两种结构的求职信

刀豆文库小编为你整合推荐4篇两种结构的求职信,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

《数据结构中图的两种存储结构和两种遍历.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构中图的两种存储结构和两种遍历
点击下载文档
相关专题 图的两种存储和遍历 两种 遍历 数据结构 图的两种存储和遍历 两种 遍历 数据结构
[其他范文]相关推荐
[其他范文]热门文章
下载全文