图的邻接表存储表示(C)

图的邻接表存储表示(C)

//———图的邻接表存储表示——-#include<stdio.h>#include<stdlib.h>#define MAX_VERTEXT_NUM 20typedef 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();}void CreateGraph(ALGraph *G){int i,j,k;ArcNode *arcNode;printf_s();scanf_s(,&G->vexNum, &G->arcNum);//建立顶点表printf_s();for (i = 0; i < G->vexNum; i++){printf_s(, i);fflush(stdin);//刷新缓冲区G->verTices[i].data = getchar();G->verTices[i].firstArc = NULL;}//建立边表printf_s();for (k = 0; k < G->arcNum; k++){printf_s();scanf_s(, &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(, i);while (G->verTices[i].firstArc != NULL){printf_s(, G->verTices[i].firstArc->adjvex);G->verTices[i].firstArc = G->verTices[i].firstArc->nextArc;}printf_s();}}

请输入顶点数和边数: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,50->4->1->1->5->4->0->2->5->3->3->5->2->4->1->0->5->3->2->1->请按任意键继续. . .

posted on

,于是,月醉了,夜醉了,我也醉了。

图的邻接表存储表示(C)

相关文章:

你感兴趣的文章:

标签云: