博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链式前向星
阅读量:6293 次
发布时间:2019-06-22

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

推荐博客 : http://blog.csdn.net/ZHangFFYY/article/details/77871897

 

我们对一个图的存储基本有两种,邻近矩阵和邻接表 ,在补充一个链式前向星

用此方法存图 , 首先先定义一个结构体数组

struct node

{  

  int to, w; // to 表示当前点所指向的下一个点

  int next; // next 表示的是当前点所连得下一个点(或者可以说是前一个点)

};

除此之外,还有一个数组 head[ ], 表示以 i 为起始点的第一条边所在的是结构体中的哪个点,(其实就是最后输入的那个边号)通常我们上来将其初始化为 -1

加边的函数这样写 :

void add(int u, int v, int w){    edge[cnt].to = v;    edge[cnt].w = w;    edge[next] = head[u];    head[u] = cnt++;}

 

初始化cnt = 0,这样,现在我们还是按照上面的图和输入来模拟一下:

edge[0].to = 2;     edge[0].next = -1;      head[1] = 0;

edge[1].to = 3;     edge[1].next = -1;      head[2] = 1;

edge[2].to = 4;     edge[2],next = -1;      head[3] = 2;

edge[3].to = 3;     edge[3].next = 0;       head[1] = 3;

edge[4].to = 1;     edge[4].next = -1;      head[4] = 4;

edge[5].to = 5;     edge[5].next = 3;       head[1] = 5;

edge[6].to = 5;     edge[6].next = 4;       head[4] = 6;

很明显,head[i]保存的是以i为起点的所有边中编号最大的那个,而把这个当作顶点i的第一条起始边的位置.

 

转载于:https://www.cnblogs.com/ccut-ry/p/8472153.html

你可能感兴趣的文章
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>