博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构----图(邻接表用法)
阅读量:5965 次
发布时间:2019-06-19

本文共 1717 字,大约阅读时间需要 5 分钟。

1、定义图的结构:

1 #define NUM_MAX 6 2 typedef struct ArcNode{ 3     int adjvex; 4     struct ArcNode * nextArc; 5 }ArcNode; //定义弧结点结构体 6 typedef struct VertexNode{ 7     int data; 8     ArcNode * firstArc; 9 }VertexNode;//定义顶点结构体10 typedef struct {11     VertexNode * AdjList[NUM_MAX];12     int vertexNum,edgeNum;13     int graphType;14 }LinkGraph;//定义图

2、定义创建图的邻接表的函数

1 void createLink(LinkGraph *lg){ 2     int start,end; 3     ArcNode *s; 4     for(int i=1;i<=lg->vertexNum;i++){ 5         (lg->AdjList[i])=(VertexNode *)malloc(sizeof(VertexNode));//如果这里没有开辟内存空间,则lg->AdjList[i]是空的。这是指针变量与实体变量的区别 6         (lg->AdjList[i])->data=i; 7         (lg->AdjList[i])->firstArc=NULL; 8     } 9     for(int i=1;i<=lg->edgeNum;i++){10         printf("Please input two vertexes of the %dth edge\n",i);11         scanf("%d%d",&start,&end);12         s=(ArcNode *)malloc(sizeof(ArcNode));13         s->adjvex=end;14         s->nextArc=lg->AdjList[start]->firstArc;15         lg->AdjList[start]->firstArc=s;16     }17 }

3、定义输出邻接表函数

1 void outPut(LinkGraph *lg){ 2     ArcNode *s; 3     for(int i=1;i<=lg->vertexNum;i++){ 4         printf("the vertex %d:",i); 5         s=lg->AdjList[i]->firstArc; 6         while(s){ 7             printf(" --> %d",s->adjvex); 8             s=s->nextArc; 9         }10         printf("\n");11     }12     13 }

4、主函数:

1 int main(){ 2     LinkGraph *lg; 3     lg=(LinkGraph*)malloc(sizeof(LinkGraph)); 4     printf("Please input the vertexNum and edgeNum:"); 5     scanf("%d%d",&lg->vertexNum,&lg->edgeNum); 6     createLink(lg); 7     printf("Output the LinkGraph:\n"); 8     outPut(lg); 9     free(lg); 10     getch();11     return 0;12 }
View Code

 

转载于:https://www.cnblogs.com/hoojjack/p/4565729.html

你可能感兴趣的文章
物以类聚:对象也有生命
查看>>
Windows Embedded CE 6.0开发初体验(六)平台定制
查看>>
动态类型var和dynamic和传统确定类型区别和效率
查看>>
读书笔记2014第10本:《设计心理学》
查看>>
Python 装饰器笔记
查看>>
[Sharepoint2007对象模型]第三回:Web应用程序(SPWebApplication)
查看>>
让视频压制更简单
查看>>
Raspberry Pi(树莓派)试用小记
查看>>
link 链表操作
查看>>
比量iOS6/iOS7, 3.5inch/4.0inch
查看>>
QT中各种MessageBox的使用
查看>>
列式存储
查看>>
CSS:CSS定位和浮动
查看>>
Zookeeper概念学习系列之zookeeper是什么?
查看>>
Storm概念学习系列之Task任务
查看>>
Java 使用execute方法执行Sql语句
查看>>
Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
查看>>
web 前端常用组件【02】Select 下拉框
查看>>
学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇
查看>>
《精通javascript》几个简单的函数(二)
查看>>