You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结构体实现解析求助:Graph类型定义存疑

C语言Edge结构体与Graph类型解析

1. Edge结构体解析

typedef struct
{
  int v;
  int w;
} Edge;

Edge EDGE(int, int);
  • 这段代码定义了Edge结构体,包含两个整型成员v和w,通常用来表示图中的一条边(比如v是起点顶点编号,w是终点顶点编号)。
  • 下方的Edge EDGE(int, int);是函数声明:该函数接收两个整数参数,返回一个Edge结构体实例,作用是快速创建并初始化一条边(内部实现一般会把参数赋值给v和w后返回结构体)。

2. Graph类型解析(重点)

typedef struct graph *Graph;
Graph GRAPHinit(int);

这是C语言里**抽象数据类型(ADT)**的典型写法,核心目的是隐藏图的内部实现细节,只对外暴露操作接口:

  • typedef struct graph *Graph; 拆解来看:
    1. struct graph是一个不完整类型声明——编译器此时仅知道存在这个结构体,但不清楚它的具体成员(实际的结构体定义会放在对应的.c文件中,不对外暴露)。
    2. 把struct graph *(指向该结构体的指针类型)起了别名Graph,使用者在代码里只需用Graph类型操作图,无需关心结构体内部结构。
  • Graph GRAPHinit(int);是初始化函数的声明:接收一个整数参数(一般是图的顶点总数),返回一个Graph类型的指针,也就是初始化完成的图实例指针,后续对图的所有操作(比如加边、遍历)都基于这个指针。

内容的提问来源于stack exchange,提问作者Calvince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:25:13