25

严蔚敏视频 笔记25

基本操作P
结构的建立和销毁

CreateGraph(&G,V,VR);
DestroyGraph(&G);
对顶点的访问操作
LocateVex(G,u); //
定位操作
GetVex(G,v); //
返回v
PutVex(&G,v,value); //
v赋值value
对邻接点的操作

FirstAdjVex(G,v); //
返回v的第一个邻接点
NextAdjVex(G,v,w) //
返回v相对于w的下一个邻接点
插入和删除顶点
InsertVex(&G,v);
DeleteVex(&G,v);
插入和删除弧
InsertArc(&G,v,w);
DeleteArc(&G,v,w);
遍历
DFSTraverse(G,v,Visit()); //
深度优先
BFSTraverse(G,v,Visit()); //
广度优先

7.2 图的存储表示
一、图的数组(邻接矩阵)存储表示
typedef struct ArcCell {
    VRType adj; // VRType
:顶点关系类型 无权图用01表示是否相邻,带权图为权值类型
    InfoType *info; //
该弧相关信息指针
} ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct {
    VertexType vex[MAX_VERTEX_NUM];
    AdjMatrix arcs;
    int vexnum,arcnum;
    GraphKind kind;
} MGraph;

二、图的邻接表存储表示
typedef struct ArcNode {
    int adjvex; //
该弧指向顶点的位置
    struct ArcNode *nextarc; //
指向下一条弧的指针
    InfoType *info; //
该弧相关信息的指针
} ArcNode;

typedef struct VNode {
    VertexType data; //
顶点信息

    ArcNode *firstarc; //
指向第一条依附该顶点的弧
} VNode, AdjList[MAX_VERTEX_NUM];

typedef struct {
    AdjList vertices;
    int vexnum,arcnum;
    int kind; //
图的种类标志

} ALGraph;

有向图的邻接表及逆邻接表

三、有向图的十字链表存储表示
typedef struct ArcBox {
    int tailvex,headvex; //
该弧的尾和头顶点的位置
    struct ArcBox *hlink,*tlink; //
分别指向下一个弧头相同和弧尾相同的弧的指针域
    InfoType *info; //
该弧相关信息的指针
} ArcBox;

typedef struct VexNode {
    VertexType data;
    ArcBox *firstin,*firstout;
} VexNode;

typedef struct {
    VexNode xlist[MAX_VERTEX_NUM];
    int vexnum,arcnum; //
有向图的当前顶点数和弧数

} OLGraph;

十字链表对应相应邻接矩阵

四、无向图的邻接多重表存储表示
typedef struct EBox {
    VisitIf mark; //
访问标记

    int ivex,jvex; //
该边依附的两个顶点的位置
    struct EBox *ilink,*jlink;
    InfoType *info; //
该边信息指针
} EBox;

typedef struct VexBox {
    VertexType data;
    EBox *firstedge; //
指向第一条依附该顶点的边

} VexBox;

typedef struct {
    VexBox adjmulist[MAX_VERTEX_NUM];
    int vexnum,edgenum;
} AMLGraph;

7.3 图的遍历
从某个顶点出发访遍图中其余顶点并且每个顶点只被访问一次

深度优先搜索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值