有没有大佬翻译翻译混乱了,
#include <stdio.h>
#include <malloc.h>
//包含图中的边
typedef struct EdgeNode{
// 边的结尾顶点
int vertex;
// 权重
int weight;
// 下一个边节点
struct EdgeNode * Next;
}EdgeNode;
typedef struct VertexNode{
// 顶点索引
int vertex;
// 边的起始顶点
EdgeNode* firstEdge;
}VertexNode;
//图
typedef struct {
// 图顶点数量
int vertices;
// 图的顶点信息
VertexNode* node;
}Graph;
//图的创建
void GraphCreate(Graph *g,int vertices){
// 顶点个数
g->vertices=vertices;
// 申请顶点个数个顶点节点
g->node=(VertexNode*)malloc(sizeof (VertexNode)*vertices);
// 初始化
for (int i = 0; i < vertices; ++i) {
g->node[i].vertex=i;
g->node[i].firstEdge=NULL;
}
}
//邻接表的销毁
void GraphDestroy(Graph *g){
for (int i = 0; i < g->vertices; ++i) {
EdgeNode * curr = g->node[i].firstEdge;
while(curr){
EdgeNode* temp=curr;
curr=curr->Next;
free(temp);
}
}
free(g->node);
g->node=NULL;
}
void GraphAddEdge(Graph *g,int u,int v,int w){
EdgeNode * newNode= (EdgeNode*)malloc(sizeof (EdgeNode));
newNode->vertex=v;
newNode->weight=w;
newNode->Next=g->node[u].firstEdge;
g->node[u].firstEdge=newNode;
}
//打印图
void GraphPrint(Graph *g){
for (int i = 0; i < g->vertices; ++i) {
EdgeNode *curr=g->node[i].firstEdge;
printf("Vertx %d:",i);
while (curr){
printf("%d(%d)->",curr->vertex,curr->weight);
curr=curr->Next;
}
printf("\n");
}
}
int main() {
Graph g;
GraphCreate(&g,5);
GraphAddEdge(&g,0,1,4);
GraphAddEdge(&g,0,2,2);
GraphAddEdge(&g,1,2,3);
GraphAddEdge(&g,2,3,4);
GraphAddEdge(&g,3,4,2);
GraphPrint(&g);
GraphDestroy(&g);
return 0;
}