//图的存储结构为邻接表
#include<stdio.h> #include<stdlib.h> #define MaxVex 100 int visited[MaxVex]; //全局数组,用于记录图中节点访问状态 typedef struct EdgeNode { //邻接表节点 int adjvex; //该邻接点在顶点数组中的下标 struct EdgeNode *next; //指向下一个邻接点 }EdgeNode; typedef struct VertexNode { //头节点 char data; //顶点信息 EdgeNode *firstedge; //邻接表头指针(指向第一条依附于该顶点的弧的指针) }VertexNode,AdjList[MaxVex]; //顶点数组(结构体数组) typedef struct Graph{//邻接表 AdjList adjList;//存顶点的数组 int numVertexes,numEdges; //图中当前的结点数以及边数 }Graph,*GraphAdjList; //建立无向图的邻接表结构 void CreateALGraph(GraphAdjList &G){ int i, j, k; if(G==NULL) G = (GraphAdjList)malloc(sizeof(Graph)); printf("输入图的结点数以及边数: "); scanf("%d%d",&G->numVertexes,&G->numEdges); fflush(stdin); printf("===========================\n"); printf("输入各个顶点的数据:\n"); for (i=0; i<G->numVertexes; ++i){ printf("顶点%d: ",i); scanf("%c", &(G->adjList[i].data));//将顶点数据放入数据域 G->adjList[i].firstedge = NULL;//边表头指针初始为NULL fflush(stdin); } printf("====
利用堆栈和队列实现图的深度优先遍历和广度优先遍历
最新推荐文章于 2024-03-13 15:38:05 发布