数据结构图的建立和应用代码_第1页
数据结构图的建立和应用代码_第2页
数据结构图的建立和应用代码_第3页
数据结构图的建立和应用代码_第4页
数据结构图的建立和应用代码_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>

Ainclude<stdlib.h>

Ainclude<conio.h>

茸defineMAXV100/*弧的结点结构类型*/

typedefcharElemType;

/*该弧的终点位置”

typedefstructANode指向下一条弧的指针*/

(

intadjvex;structANode

*nextarc:

/*邻接表头结点的类型”

}ArcNode;

/*顶点信息*/

typedefstructVnode/*指向第一条弧*/

(

ElemTypedata;

ArcNode*firstarc;/.AdjUst是邻接表类型*/

}VNode;

typedefVNodeAdjList[MAXV];/*邻接表*/

typedefstruct/*图中顶点数n和边数e*/

(/*图的类型*/

AdjListadjlist;intn,e;

)ALGraph;

typedefstruct

/*顶点编**/

(

/*顶点其他信息*/

intno;

/*顶点类型”

ElemTypedata;

)VertexType;

/*图的定义*/

typedefstruct

(/*邻接矩阵率/

intedges[MAXV][MAXV];/*顶点数,弧数*/

intvexnum,arcnum;/*存放顶点信息*/

VertexTypevexs[MAXVJ;

)MGraph;

〃界面函数

voidjiemianO

printf("***无向图的建立及其应用***\n");printf("\rT);

printfC*l.邻接矩阵建图W);

printf(**2.邻接表建图\n");

printfC*3.邻接表图的广度遍历\n”);

printf("*4.结束..........\n*);

printf("----------------------------\rT);

printf(*温馨提示:为了让您使用愉快,请按提示操作!\n”);printf

请选择:");

voidshuchul(MGraph*m)〃输出邻接矩阵

(

inti,j;

print®邻接矩阵为:\n-);

for(i=0:i<m>>vexnum:i++)

(

for(j=0;exnum;j++)

(

print"%d'm")edges[i]fj]);

)

if(j=m->vexnum)〃换行判断

printf(H\n");

voidcreategraphl()〃创建邻接矩阵

inti,j,a,b;

MGraph*m;

m=(MGraph*)malloc(sizeof(MGraph));

printf(”这里是用邻接矩阵建图:\n");

printf("请输入图的顶点数:\n〃);

scanf(飞d”,&m-〉vexnum);

for(i=0;i<m->vexnum;i++)〃邻接矩阵置零

for(j二0;j<m->vexnum:j++)

m->edgesli][j]Zl0;

for(i=l;i<=m->vexnum;i++)

"输入顶点

printf(*请输入第%d个顶点:\n*,i);

scanf(''%c'',&m->vexs[iT].data);

getchaiO;

m*>vexs[i].no=i;

)

printf(n\nn);

printf(”请输入图的边数:\n”);〃输入边

scanf(〃、d〃,&m->arcnum);

print?("请输入边相连的两个顶点,逗号隔开,例如:a->b,输入为:1,2\吟;

for(j=l;j<=m->arcnum:j++)

(

printf(〃请输入第%d条边相连的两个顶点:\n”,m->vexs[j].no);scanfC%d,%d\&a,&b);

m->edges[aT][bT]二1;

)

systemC'CLS*);

shuchul(m);

)

voidshuchu2(ALGraph*a)〃输出邻接表

(

inti,j;

ArcNode*q;

printf(”这是所建立的图:\n");

for(i二0;i〈a->n;i++)

(

printf(*%c二a->adjlist[i],data);

printf

q二a->adjlistLi],firstarc;

for(j=O;j<a->n;j++)

(

if(q=NULL)

(

printf(*"\n*);

break;

)

printfC%d",q->adjvex);

printf

q=q->nextarc;

voidcreategraph2(ALGraph*a)〃创建邻接表

intitj,c,d;

ArcNode*p;

a->n=aA>e=0;

printf(*这是用邻接表建图:\n");

printf("请输入图的顶点数:\n");

scanf(W,&a->n);

for(i=0;i<a->n;iA+)〃置空

(

a->adjlistLi],firstarc二NULL;

)

for(i=l;i<=a->n;i++)〃输入顶点

(

printf("清输入第96d个顶点\n”,i);

getchar0;

scanf&a_)adjlist[iT],data);

)

printf("\nn);

printf("请输入图的边数:\n");〃输入边

scanf&a->e);

printf(*请输入各条边相连的两个顶点,例如:a->b,a为第一个顶点,b为第二个;输入:1,

2\n");

for(j=l;j<=a>>e;j++)

(

printf(*请输入第%d条边相连的两个顶点:\n”,j);

scanf("%d,&c,&d);

if(c<ld<lc>a~>nd>a~>n)

(

printf(*输入有误!\n*);

continue;

)

p二(ArcNode*)malloc(sizeof(ArcNode));//a至Ub

p->adjvex二dT;

p->nextarc=a->adj1ist[cT].firstarc;a->adjlistEc~L.firstarc=p;

p=(ArcXode*)malloc(sizeof(ArcNode));//b到a

p->adjvex=cT;

p->nextarc=a->adj1ist[dT].firstarc;a——>adjlist•firstarc=p;

systeni(MCLSn);

shuchu2(a);〃调用输出

)

intFLAGO〃判断是否返回主菜单

(

ints;

printfC”返回主菜单按1,退出按0:\nn);

printfC请选择:\n*);

scanf(飞d",&s);

system(nCLSH);

returns;

)

voidguangdu(ALGraph*a,intv)//广度遍历

(

ArcNode*p;

intqueueLMAXVrJ;

intvisited[MAXV];

intf=0,p=0,x,i;

for(i=0;i<a->n;i++)

(

visited[i]=O;

)

printf("%c",a->adjlist[vTJ.data);

visited[v-l]=l;

r=(r+l)%MAXV;

queueEr]=v;

while(f!=r)

(

f=(f+l)%MAXV;

x二queuelf[;

adjlist[x],firstarc;

while(p!二NULL)

(

if(visited[p->adjvex]==O)

(

visitedEp"?adjvex]=l;

printf(A%c二a->adjlist[p->adjvex].data);

r二(r-l)GMAXV;

queue[r]=p->adjvex;

p=p〜〉nextarc;

printf(*\n*);

getchO;

system("CLSn);

voidmain0

intflagZ11,c,v,i;

ALGraph*a;

a=(ALGraph*)malloc(sizeof(ALGraph)):

while(flag)

JiemianO;scanf"选择界而

(W,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论