图的存储结构——邻接表
2017-08-16 10:45
204 查看
#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; const int maxn=105; typedef struct EdgeNode { int adjvex; int weight; struct EdgeNode *next; }EdgeNode; typedef struct VertexNode { int data; EdgeNode *firstedge; }VertexNode,AdjList[maxn]; typedef struct { AdjList adjlist; int numv,nume; }GraphAdjList; void CreateALGraph(GraphAdjList *G) { int i,j,k; EdgeNode *e; printf("输入顶点数和边数\n"); scanf("%d%d",&G->numv,&G->nume); printf("输入顶点信息\n"); for(i=0;i<G->numv;i++) { scanf("%d",&G->adjlist[i].data); G->adjlist[i].firstedge=NULL; } printf("输入边的信息(i,j)\n"); for(k=0;k<G->nume;k++) { scanf("%d%d",&i,&j); e=(EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex=j; e->next=G->adjlist[i].firstedge; G->adjlist[i].firstedge=e; //printf("%d\n",G->adjlist[i].firstedge->adjvex); e=(EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex=i; e->next=G->adjlist[j].firstedge; G->adjlist[j].firstedge=e; //printf("%d\n",G->adjlist[j].firstedge->adjvex); } } int main() { GraphAdjList *G=(GraphAdjList *)malloc(sizeof(GraphAdjList)); CreateALGraph(G); for(int i=0;i<G->numv;i++) { printf("当前节点:%d ",G->adjlist[i].data); EdgeNode *firstedge=G->adjlist[i].firstedge; while(firstedge!=NULL) { printf("%d ",firstedge->adjvex); firstedge=firstedge->next; } printf("\n"); } return 0; }
相关文章推荐
- 数据结构之(图存储结构之)邻接表
- 邻接表 图的存储结构
- 【数据结构】图的存储方式:邻接矩阵和邻接表
- 无向图邻接表的存储结构
- 图的邻接表存储结构
- 16 - 12 - 26 图的存储结构-邻接矩阵、邻接表、十字链表
- 第十二周-图及其存储结构(邻接矩阵·邻接表)算法库
- 2015-12-7 项目1—数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构之图的存储结构——动态邻接表
- 【数据结构】图的存储方式:邻接矩阵和邻接表
- 第十一周——项目一—图及其存储结构(邻接矩阵、邻接表)算法库
- 【数据结构】图邻接表存储实现
- 第十一周 项目一 数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构:图的存储结构之邻接表
- 刚刚写了个邻接表存储结构
- 图的遍历--使用邻接表作为存储结构的遍历(DFS、BFS)C语言
- 图的存储结构——邻接表的建立
- 数据结构:图的存储结构之邻接表
- 【数据结构】图的存储方式:邻接矩阵和邻接表
- 数据结构上机实践第11周项目2 - 操作用邻接表存储的图