资源简介
每行都有详细的注释,请配合零基础学习数据结构这本书来看。真的是良心价啊
代码片段和文件信息
#include
#include
#include
#include
typedef char VertexType[4];
typedef char InfoPtr;
typedef int VRType;
#define INFINITY 65535 /*定义一个无限大的值*/
#define MaxSize 50 /*最大顶点个数*/
typedef enum{DGDNUGUN}GraphKind; /*图的类型:有向图、有向网、无向图和无向网*/
typedef struct
{
VRType adj; /*对于无权图,用1表示相邻,0表示不相邻;对于带权图,存储权值*/
InfoPtr *info; /*与弧或边的相关信息*/
}ArcNodeAdjMatrix[MaxSize][MaxSize];
typedef struct /*图的类型定义*/
{
VertexType vex[MaxSize]; /*用于存储顶点*/
AdjMatrix arc; /*邻接矩阵,存储边或弧的信息*/
int vexnumarcnum; /*顶点数和边(弧)的数目*/
GraphKind kind; /*图的类型*/
}MGraph;
void CreateGraph(MGraph *N);
int LocateVertex(MGraph NVertexType v);
void DestroyGraph(MGraph *N);
void DisplayGraph(MGraph N);
void main()
{
MGraph N;
printf(“创建一个网:\n“);
CreateGraph(&N);
printf(“输出网的顶点和弧:\n“);
DisplayGraph(N);
printf(“销毁网:\n“);
DestroyGraph(&N);
}
void CreateGraph(MGraph *N)
/*采用邻接矩阵表示法创建有向网N*/
{
int ijkw;
VertexType v1v2;
printf(“请输入有向网N的顶点数弧数: “);
scanf(“%d%d“&(*N).vexnum&(*N).arcnum);
printf(“请输入%d个顶点的值(<%d个字符):\n“N->vexnumMaxSize);
for(i=0;ivexnum;i++) /*创建一个数组,用于保存网的各个顶点*/
scanf(“%s“N->vex[i]);
for(i=0;ivexnum;i++) /*初始化邻接矩阵*/
for(j=0;jvexnum;j++)
{
N->arc[i][j].adj=INFINITY;
N->arc[i][j].info=NULL; /*弧的信息初始化为空*/
}
printf(“请输入%d条弧的弧尾 弧头 权值(以空格作为间隔): \n“N->arcnum);
for(k=0;karcnum;k++)
{
scanf(“%s%s%d“v1v2&w); /*输入两个顶点和弧的权值*/
i=LocateVertex(*Nv1);
j=LocateVertex(*Nv2);
N->arc[i][j].adj=w;
}
N->kind=DN; /*图的类型为有向网*/
}
int LocateVertex(MGraph NVertexType v)
/*在顶点向量中查找顶点v,找到返回在向量的序号,否则返回-1*/
{
int i;
for(i=0;i if(strcmp(N.vex[i]v)==0)
return i;
return -1;
}
void DestroyGraph(MGraph *N)
/*销毁网N*/
{
int ij;
for(i=0;ivexnum;i++) /*释放弧的相关信息*/
for(j=0;jvexnum;j++)
if(N->arc[i][j].adj!=INFINITY) /*如果存在弧*/
if(N->arc[i][j].info!=NULL) /*如果弧有相关信息,释放该信息所占用空间*/
{
free(N->arc[i][j].info);
N->arc[i][j].info=NULL;
}
N->vexnum=0; /*将网的顶点数置为0*/
N->arcnum=0; /*将网的弧的数目置为0*/
}
void DisplayGraph(MGraph N)
/*输出邻接矩阵存储表示的图N*/
{
int ij;
printf(“有向网具有%d个顶点%d条弧,顶点依次是: “N.vexnumN.arcnum);
for(i=0;i printf(“%s “N.vex[i]);
printf(“\n有向网N的:\n“); /*输出网N的弧*/
printf(“序号i=“);
for(i=0;i printf(“%8d“i);
printf(“\n“);
for(i=0;i {
printf(“%8d“i);
for(j=0;j printf(“%8d“N.arc[i][j].adj);
printf(“\n“);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-07-20 22:26 例题代码\
目录 0 2017-07-20 22:24 例题代码\第10章\
目录 0 2019-05-08 16:44 例题代码\第10章\例10_1\
目录 0 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\
文件 33792 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\vc60.idb
文件 53248 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\vc60.pdb
文件 58368 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.bsc
文件 184464 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.exe
文件 187164 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.ilk
文件 9690 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.obj
文件 237700 2019-05-08 15:23 例题代码\第10章\例10_1\Debug\例10_1.pch
文件 451584 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.pdb
文件 0 2019-05-08 15:25 例题代码\第10章\例10_1\Debug\例10_1.sbr
文件 2959 2019-05-08 15:24 例题代码\第10章\例10_1\例10_1.c
文件 4284 2017-07-20 22:23 例题代码\第10章\例10_1\例10_1.dsp
文件 537 2017-07-20 22:23 例题代码\第10章\例10_1\例10_1.dsw
文件 33792 2019-05-08 16:44 例题代码\第10章\例10_1\例10_1.ncb
文件 48640 2019-05-08 16:44 例题代码\第10章\例10_1\例10_1.opt
文件 1427 2019-05-08 15:25 例题代码\第10章\例10_1\例10_1.plg
目录 0 2017-07-20 22:23 例题代码\第10章\例10_2\
文件 3136 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.c
文件 4284 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.dsp
文件 537 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.dsw
文件 33792 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.ncb
文件 48640 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.opt
文件 888 2017-07-20 22:23 例题代码\第10章\例10_2\例10_2.plg
目录 0 2017-07-20 22:24 例题代码\第10章\例10_4\
文件 3407 2017-07-20 22:23 例题代码\第10章\例10_4\例10_4.c
文件 4288 2017-07-20 22:23 例题代码\第10章\例10_4\例10_4.dsp
文件 537 2017-07-20 22:23 例题代码\第10章\例10_4\例10_4.dsw
文件 33792 2017-07-20 22:23 例题代码\第10章\例10_4\例10_4.ncb
............此处省略503个文件信息
评论
共有 条评论