图的数组表示法为何画蛇添足多出最后一句

OICQshenshi 2012-05-11 05:24:52
书的描述如下:
图的数组表示法采用两个数组分别存储数据元素的信息和数据元素之间的关系,其形式描述如下:
         #define MAXNODE…              //图中顶点的最大个数
typedef struct
{
vertype vertex; //顶点信息
…;
}VerNode;
typedef struct
{
int adj;
…;
}Arc;
typedef struct
{
VerNode vexs[MAXNODE];
Arc arcs[MAXNODE][MAXNODE];
}
typedef int AdjMatrix[MAXNODE][MAXNODE];

typedef int AdjMatrix[MAXNODE][MAXNODE];为什么会有这么一句,直接写 AdjMatrix 不行吗,这问题困惑一天了,求教,
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

请问 typedef int AdjMatrix[MAXNODE][MAXNODE]最终是int类型还是AdjMatrix[][]类型呢
[/Quote]

既不是int,也不是AdjMatrix[][],请看红色部分
typedef int AdjMatrix[MAXNODE][MAXNODE];
红色部分是一个类型的整体,而AdjMatrix自己是一个部分。
所以任何用AdjMatrix声明的变量,都等同于将该变量代入上面蓝色AdjMatrix那里声明一样。
所以,声明
AdjMatrix rel;
等同于
int rel[MAXNODE][MAXNODE];
OICQshenshi 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

C/C++ code

typedef struct
{
VerNode vexs[MAXNODE];
Arc arcs[MAXNODE][MAXNODE];
} // 这里一定少写了什么东西。
typedef int AdjMatrix[MAXNODE][MAXNODE]; // 这是另一个typedef声明



要知道,声明结构体或者类的时……
[/Quote]
还是您说得靠谱些,请问 typedef int AdjMatrix[MAXNODE][MAXNODE]最终是int类型还是AdjMatrix[][]类型呢
OICQshenshi 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

C/C++ code

typedef struct
{
VerNode vexs[MAXNODE];
Arc arcs[MAXNODE][MAXNODE];
} // 这里一定少写了什么东西。
typedef int AdjMatrix[MAXNODE][MAXNODE]; // 这是另一个typedef声明



要知道,声明结构体或者类的时……
[/Quote]
还是您说得靠谱些,请问 typedef int AdjMatrix[MAXNODE][MAXNODE]最终是int类型还是AdjMatrix[][]类型呢
  • 打赏
  • 举报
回复

typedef struct
{
VerNode vexs[MAXNODE];
Arc arcs[MAXNODE][MAXNODE];
} // 这里一定少写了什么东西。
typedef int AdjMatrix[MAXNODE][MAXNODE]; // 这是另一个typedef声明


要知道,声明结构体或者类的时候,最后要加分号。那个地方没有加,所以是少东西了,并不是说将那个结构体定义为AdjMatrix了。

而下面的typedef int AdjMatrix[MAXNODE][MAXNODE];是单独的一句,意思是,AdjMatrix以后可以作为一个类型,这个类型是个二维int数组,每个维度大小是MAXNODE。
例如:
AdjMatrix rel;
等同于
int rel[MAXNODE][MAXNODE];
小班得瑞 2012-05-12
  • 打赏
  • 举报
回复
它就是让意思表达得更形象,让别人一看这个:哦,这个是邻接矩阵!
OICQshenshi 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这是typedef的用处, AdjMatrix可以少写不少东西,而且更形象
[/Quote]
我的意思是,感觉书上写法貌似有问题,最后一段写成这样可以吗
typedef struct
{
VerNode vexs[MAXNODE];
Arc arcs[MAXNODE][MAXNODE];
}AdjMatrix,AdjMatrix[MAXNODE][MAXNODE];
昵称很不好取 2012-05-11
  • 打赏
  • 举报
回复
这是typedef的用处, AdjMatrix可以少写不少东西,而且更形象

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧