ArcNode *q = (ArcNode *)malloc(sizeof(ArcNode));//申请一个结点 q->adjvex=k; //此节点所指向的下一个顶点序号为K q->nextarc=p.vertices[j].firstarc; //节点所指向的弧变成第j个节点的上一条弧 p.vertices[j].firstarc=q;
时间: 2024-02-12 15:03:19 浏览: 121
边表中的结点的形式-C++版数据结构-张宏
这段代码是用来实现有向图的邻接表存储结构中,添加一条从顶点j指向顶点k的弧的操作。具体来说,它的作用是:
1. 创建一个新的弧节点q,并为其分配内存空间。
2. 将节点q的adjvex字段设置为k,表示这个节点所指向的下一个顶点的序号是k。
3. 将节点q的nextarc字段设置为顶点j的firstarc字段,表示节点q所指向的弧是顶点j的第一条出边。
4. 将顶点j的firstarc字段更新为节点q,表示从顶点j出发现在有一条指向顶点k的出边。
需要注意的是,这段代码中的p是一个存储有向图的邻接表结构体,其成员vertices是一个顶点数组,每个顶点可能有多条出边,因此需要用一个指针来指向它的第一条出边(即firstarc字段)。而ArcNode则是邻接表中的弧节点结构体,包含了一个指向下一个顶点的指针(adjvex字段)和一个指向下一条弧的指针(nextarc字段)。
阅读全文