手机
当前位置:查字典教程网 >编程开发 >C语言 >图的邻接表存储表示示例讲解
图的邻接表存储表示示例讲解
摘要:复制代码代码如下://---------图的邻接表存储表示-------#include#include#defineMAX_VERTEXT...

复制代码 代码如下:

//---------图的邻接表存储表示-------

#include<stdio.h>

#include<stdlib.h>

#define MAX_VERTEXT_NUM 20

typedef int InfoType;

typedef char VertextType;

typedef struct ArcNode

{

int adjvex;

struct ArcNode *nextArc;

InfoType *info;

}ArcNode;

typedef struct VNode

{

VertextType data;

ArcNode *firstArc;

}VNode, AdjList[MAX_VERTEXT_NUM];

typedef struct

{

AdjList verTices;

int vexNum;

int arcNum;

int kind;

}ALGraph;

void CreateGraph(ALGraph *G);

void DisplayGraph(ALGraph *G);

int main()

{

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

CreateGraph(Graph);

DisplayGraph(Graph);

system("pause");

}

void CreateGraph(ALGraph *G)

{

int i,j,k;

ArcNode *arcNode;

printf_s("请输入顶点数和边数:");

scanf_s("%d,%d",&G->vexNum, &G->arcNum);

//建立顶点表

printf_s("建立顶点表n");

for (i = 0; i < G->vexNum; i++)

{

printf_s("请输入第%d个顶点:", i);

fflush(stdin);//刷新缓冲区

G->verTices[i].data = getchar();

G->verTices[i].firstArc = NULL;

}

//建立边表

printf_s("建立边表n");

for (k = 0; k < G->arcNum; k++)

{

printf_s("请输入(vi-vj)的顶点对序号");

scanf_s("%d,%d", &i, &j);

arcNode = (ArcNode *)malloc(sizeof(ArcNode));

arcNode->adjvex = j;

arcNode->nextArc = G->verTices[i].firstArc;//插入表头

G->verTices[i].firstArc = arcNode;

arcNode = (ArcNode *)malloc(sizeof(ArcNode));

arcNode->adjvex = i;

arcNode->nextArc = G->verTices[j].firstArc;//插入表头

G->verTices[j].firstArc = arcNode;

}

}

void DisplayGraph(ALGraph *G)

{

int i;

for (i = 0; i < G->vexNum; i++)

{

printf_s("%d->", i);

while (G->verTices[i].firstArc != NULL)

{

printf_s("%d->", G->verTices[i].firstArc->adjvex);

G->verTices[i].firstArc = G->verTices[i].firstArc->nextArc;

}

printf_s("n");

}

}

图的邻接表存储表示示例讲解1

复制代码 代码如下:

请输入顶点数和边数:6,7

建立顶点表

请输入第0个顶点:0

请输入第1个顶点:1

请输入第2个顶点:2

请输入第3个顶点:3

请输入第4个顶点:4

请输入第5个顶点:5

建立边表

请输入(vi-vj)的顶点对序号0,1

请输入(vi-vj)的顶点对序号0,4

请输入(vi-vj)的顶点对序号1,4

请输入(vi-vj)的顶点对序号1,5

请输入(vi-vj)的顶点对序号2,3

请输入(vi-vj)的顶点对序号2,5

请输入(vi-vj)的顶点对序号3,5

0->4->1->

1->5->4->0->

2->5->3->

3->5->2->

4->1->0->

5->3->2->1->

请按任意键继续. . .

【图的邻接表存储表示示例讲解】相关文章:

C数据结构之单链表详细示例分析

C++中静态存储区与栈以及堆的区别详解

C 创建链表并将信息存储在二进制文件中读取的实例代码

VC++中的字体设置方法详解

c语言内存泄露示例解析

C语言小程序 杨辉三角示例代码

C语言可变参数函数详解示例

共用体的定义与应用详细解析

C/C++宏定义的可变参数详细解析

c语言中if 语句的作用范围示例代码

精品推荐
分类导航