数据结构vl怎么求_数据结构(5)

一.思维导图

二.重要概念的笔记

1.假设图中有n个顶点,e条边

含有e=n(n-1)/2条边的无向图称为完全图;

含有e=n(n-1)条弧的有向图称为有向完全图;

若边或弧的个数e

2.

3.无向图的领接矩阵是对称的,有向图的领接矩阵可能是不对称的

4.在有向图中 统计第i行1的个数可得顶点i的出度(以顶点为头的弧的数目);

统计第j列1的个数可得顶点j的入度(以顶点为尾的弧的数目)

5.性质:任意无向图中,若有n个顶点和小于n-1条边,则必是非连通图;若有多于n-1条边,则一定有环

6.有向树:有向图中恰有一个顶点的入度为0,其余顶点的入度均为1

7.

8.结点i的度=邻接矩阵中第i行或第i列之和

9.构造无向图算法

O(n²+e*n)

Status CreateUDN(MGraph &G) {//采用数组(邻接矩阵)表示法,构造无向网G

scanf(&G.vexnum, &G.arcnum, &Inclnfo);//Inclnfo为0则各弧不含其他信息

for (i = 0;i < G.vexnum;++i)scanf(&G.vexs[i]);//构造顶点向量

for (i = 0; i < G.vexnum; ++i) //初始化邻接矩阵

for (j = 0;j < G.vexnum;++j)

G.arcs[i][j] = { INFINITYNULL }; //(adj, info)

for (k = 0;k < G.arcnum;++k) {//构造邻接矩阵

scanf(&v1, &v2, &w); //输入一条边依附的顶点及权值

i = LocateVex(Gv1);j = LocateVex(G, v2); //确定v1和v2在G中位置

G.arcs[i][j].adj = w; //弧的权值

if (Inclnfo)Input(*G.arcs[i]j].info); //若弧含有相关信息,则输入

G.arcs[j][i] = G.arcs[i][j]; //置的对称弧

}

return OK;

}// CreateUDN

10.对于稀疏图而言,邻接表比邻接矩阵节省存储空间

11.构造有向图算法

O(e*n)

Status CreateDG(OLGraph& G) { //采用十字链表存储表示,构造有向G(G.kind=DG)

scanf(&G.vexnum, &G.arcnum, &Inclnfo); //lnclnfo为0则各弧不含其他信息

for (i = 0; i < G.vexnum;++i) { //构造表头向量

scanf(&G.xlist[i].data); //输入顶点值

G.xlist[i].firstin = NULL;G.xlist[i].firstout = NULL; //初始化指针

}

for (k = 0;k < G.arcnum;++k) {//输入各弧并构造十字链表

sc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值