图的邻接表存储 c实现
来源:互联网 发布:淘宝买csgo安全吗 编辑:程序博客网 时间:2024/05/21 02:20
图的邻接表存储 c实现 (转载)
用到的数据结构是
一个是顶点表,包括顶点和指向下一个邻接点的指针
一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针
刚开始的时候把顶点表初始化,指针指向null。然后边表插入进来,是插入到前一个,也就是直接插入到firstedge指向的下一个,而后面的后移
#define MaxVertexNum 100typedef int VertexType;typedef struct node //边表结点{ int adjvex; //邻接点域 struct node* next; //链域 //若要表示边上的权,则应增加一个数据域} EdgeNode;typedef struct vnode //顶点表结点{ VertexType vertex; //顶点域 EdgeNode* firstedge; //边表头指针 int count;} VertexNode;typedef VertexNode AdjList[MaxVertexNum];//AdjList是邻接表类型typedef struct{ AdjList adjlist; //邻接表 int n,e; //顶点数和边数} ALGraph; //对于简单的应用,无需定义此类型,可直接使用AdjList类型
以下建立的是无向图的邻接表,有向图的更简单了
#include <stdio.h>#include <stdlib.h>#define MaxVertexNum 100typedef char VertexType;typedef struct node //边表节点{ int adjvex; node* next;}EdgeNode;typedef struct //顶点表节点{ VertexType vertex; EdgeNode* firstedge;}VertexNode;typedef VertexNode AdjList[MaxVertexNum];typedef struct { AdjList adjlist;int n,e;}ALGraph;void create(ALGraph*);void main(){ ALGraph* G= (ALGraph*)malloc(sizeof(ALGraph)); create(G); for (int i=0;i< G->n;i++) { printf("%d->",i); while(G->adjlist[i].firstedge!=NULL) {printf("%d->",G->adjlist[i].firstedge->adjvex);G->adjlist[i].firstedge=G->adjlist[i].firstedge->next; } printf("\n"); }}void create(ALGraph* G){ int i,j,k,w,v; EdgeNode *s;printf("读入顶点数和边数"); scanf("%d,%d",&G->n,&G->e); for (i=0;i<G->n;i++) { fflush(stdin); printf("建立顶点表"); G->adjlist[i].vertex=getchar(); G->adjlist[i].firstedge=NULL; } printf("建立边表\n"); for (k=0;k<G->e;k++) { printf("读入(vi-vj)的顶点对序号"); scanf("%d,%d",&i,&j); s=(EdgeNode*)malloc(sizeof(EdgeNode)); s->adjvex=j; s->next=G->adjlist[i].firstedge; //插入表头 G->adjlist[i].firstedge=s; s=(EdgeNode*)malloc(sizeof(EdgeNode)); s->adjvex=i; s->next=G->adjlist[j].firstedge; G->adjlist[j].firstedge=s; }}
- 图的邻接表存储 c实现
- 图的邻接表存储 c实现
- 图的邻接表存储 c实现
- 图的邻接表存储c实现
- 图的邻接表存储 c实现
- 图的邻接表存储 c实现
- 图的邻接表存储 c实现
- 图的邻接表存储 c实现
- 图的邻接表存储c实现
- 图的邻接表存储 c实现
- 图的邻接表存储(C语言实现)
- 图的邻接表存储用C实现
- C语言:实现图的邻接表存储表示
- 图的邻接表存储 cpp实现
- 图的邻接表存储及其实现
- 图的存储表示--邻接表实现
- 图的邻接表C实现
- <C/C++图>图的邻接表存储(C++模板实现)
- android service 学习(下)
- 几何汇总(暂不ac)
- 常用Linux命令一(解压缩)
- 在 Mac OS X Lion 下修改 Hosts 的四种方法
- JQuery对Select的操作
- 图的邻接表存储 c实现
- hibernate HQL查询语句分组、排序
- java.lang.NoSuchMethodError: com.opensymphony.xwork2.util.ValueStack.findValue
- UVA 507 - Jill Rides Again 动态规划
- 迷茫
- mysql 和 mongo db 语法对比
- linux touch命令
- 栈的基本操作
- 在VS2010下编译libjpeg及其应用例子