图邻接表有向表代码简洁实现
来源:互联网 发布:aframe.js下载 编辑:程序博客网 时间:2024/05/01 23:26
邻接表 有向表 1建一个表头数组[n]存放边表头
2 n个边表头数组存放每个边表信息
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define MAXNODE 100;#define LEN sizeof(ArcNode)int vexnum,arcnum; //顶点个数 和弧的个数 struct ArcNode //边表{ int adjvex; //存邻接点 ArcNode *next;}; //Arc 英文 弧typedef struct //顶点表节点{ int vexdata; //顶点信息 ArcNode *firstarc; //指向头个接点的指针}VerNode; //vertex 英文 顶点void CreatAdjList(VerNode G[]) //建立有向图的邻接表存储结构{ int k,w,i,n,m=0; printf("输入顶点个数 和信息"); scanf("%d",&n); //输入个数 for(i=1;i<=n;i++) { //如果还想加存储数据 可以在这里泻进来 G[i].vexdata=i; //这个i其实就是点的名字 如果要变得话可以在这里改一下 G[i].firstarc=NULL; } scanf("%d %d",&k,&w); //输入弧(k w)00结束 while(k!=0&&w!=0) { ArcNode *p; p=(struct ArcNode*)malloc(LEN); //先开一个空间 p->adjvex=w; //给他赋值 相当于第一个空格 用来保存邻接信息 p->next=G[k].firstarc; //这一步和下一步 就是在第K个边表头插一个w节点 G[k].firstarc=p; m++; //弧的个数+1 scanf("%d %d",&k,&w); } vexnum=n;arcnum=m; //n就是节点数 m就是弧长数}void PrintAdjList(VerNode G[]){ int i,n; //n是统计邻接点个数 for( i=1;i<=vexnum;i++) { printf("%d:",G[i].vexdata); n=0; while(G[i].firstarc!=NULL) {printf("->%d",G[i].firstarc->adjvex); G[i].firstarc=G[i].firstarc->next;n++;} printf(" 邻接点个数是%d\n",n); }}int main(){ VerNode G[100]; CreatAdjList(G); //建立邻接表 PrintAdjList(G); //打印邻接表 return 0;}
0 0
- 图邻接表有向表代码简洁实现
- 有向图的邻接表实现
- C++邻接表实现无向图、有向图
- 有向图-邻接表
- 有向加权图的邻接表实现
- 邻接链表实现的有向图
- 有向图的邻接表类
- 用邻接表存储有向图
- 有向图的邻接表存储
- 邻接表有向图DFS
- 邻接表、构造有向图
- C++邻接表与有向图
- 有向图的邻接表储存
- 有向图的邻接链表
- 邻接表 有向图 是否有环 C实现 (dfs
- 邻接表-建立无向图、无向网、有向图、有向网
- 用邻接表实现无向图
- Java实现无向图邻接表
- axis2+spring集成
- opencv(九)之轨迹条条创建和使用createTrackbar
- js导出EXCLE
- 01UI-day3-151228
- readyState的五种状态
- 图邻接表有向表代码简洁实现
- SourceTree初学
- Android7.0 Messaging源码分析(0) - 启动篇
- 01UI-day4-151229
- NOIP2016考前总结
- android工程如何使用tensorflow
- 数据结构与算法简介
- Java设计模式17——模板方法模式
- Java性能调优-JPS、jmap、jconsole等