问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言版数据结构图的一些基本操作函数如下,有三个地方不了解,请各位帮帮忙?

发布网友 发布时间:2022-04-29 07:33

我来回答

2个回答

热心网友 时间:2023-10-13 05:21

(1)问题三:
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
*G不是指针,是指针G所指对象,就是ALGraph类型。程序中多处使用变量G,但是不同的地方,含义不同。在void CreateGraph(ALGraph *G)里面,G是一个指针,因此,引用其所指对象,要用*G。其他情况下,ALGraph G,G不是指针。
(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数指针是为以后任意扩展输出程序,以适应不同需要,并且可以作为参数传递。
(3)第二:FirstAdjVex(G,G.vertices[v].data)为什么要用顶点,用了之后又取位置,而不直接用位置,会有什么漏洞吗?不会
int FirstAdjVex(ALGraph G,VertexType v)
{
ArcNode *p;
int v1;
v1=LocateVex(G,v);
p=G.vertices[v1].firstarc;
if(p)
return p->adjvex;
else
return -1;
}
利用已经定义的定位函数LocateVex直接定位顶点v,然后直接读取其firstarc,很自然的过程。

热心网友 时间:2023-10-13 05:21

以我目前的水平只能回答你第三个问题。
直接用G当然也可以,但是因为C语言按值传递,而G应该是一个挺大的结构体,将其复制一遍应当有较大开销;如果使用指针做参数,那么就省去了复制整个结构体的开销,而只用复制一个指针(相当于无符号整数)。按指针传递在很多情况下都被用来降低传值开销的。

热心网友 时间:2023-10-13 05:21

(1)问题三:
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
*G不是指针,是指针G所指对象,就是ALGraph类型。程序中多处使用变量G,但是不同的地方,含义不同。在void CreateGraph(ALGraph *G)里面,G是一个指针,因此,引用其所指对象,要用*G。其他情况下,ALGraph G,G不是指针。
(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数指针是为以后任意扩展输出程序,以适应不同需要,并且可以作为参数传递。
(3)第二:FirstAdjVex(G,G.vertices[v].data)为什么要用顶点,用了之后又取位置,而不直接用位置,会有什么漏洞吗?不会
int FirstAdjVex(ALGraph G,VertexType v)
{
ArcNode *p;
int v1;
v1=LocateVex(G,v);
p=G.vertices[v1].firstarc;
if(p)
return p->adjvex;
else
return -1;
}
利用已经定义的定位函数LocateVex直接定位顶点v,然后直接读取其firstarc,很自然的过程。

热心网友 时间:2023-10-13 05:21

以我目前的水平只能回答你第三个问题。
直接用G当然也可以,但是因为C语言按值传递,而G应该是一个挺大的结构体,将其复制一遍应当有较大开销;如果使用指针做参数,那么就省去了复制整个结构体的开销,而只用复制一个指针(相当于无符号整数)。按指针传递在很多情况下都被用来降低传值开销的。

热心网友 时间:2023-10-13 05:21

(1)问题三:
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
*G不是指针,是指针G所指对象,就是ALGraph类型。程序中多处使用变量G,但是不同的地方,含义不同。在void CreateGraph(ALGraph *G)里面,G是一个指针,因此,引用其所指对象,要用*G。其他情况下,ALGraph G,G不是指针。
(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数指针是为以后任意扩展输出程序,以适应不同需要,并且可以作为参数传递。
(3)第二:FirstAdjVex(G,G.vertices[v].data)为什么要用顶点,用了之后又取位置,而不直接用位置,会有什么漏洞吗?不会
int FirstAdjVex(ALGraph G,VertexType v)
{
ArcNode *p;
int v1;
v1=LocateVex(G,v);
p=G.vertices[v1].firstarc;
if(p)
return p->adjvex;
else
return -1;
}
利用已经定义的定位函数LocateVex直接定位顶点v,然后直接读取其firstarc,很自然的过程。

热心网友 时间:2023-10-13 05:21

以我目前的水平只能回答你第三个问题。
直接用G当然也可以,但是因为C语言按值传递,而G应该是一个挺大的结构体,将其复制一遍应当有较大开销;如果使用指针做参数,那么就省去了复制整个结构体的开销,而只用复制一个指针(相当于无符号整数)。按指针传递在很多情况下都被用来降低传值开销的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 千与千寻有漫画吗 .日本漫画《千与千寻》.《龙猫》等等的作者是谁? C语言软件结构图 宫崎骏漫画《千与千寻的神隐》有什么深层次的含义呢? 日本动漫《千与千寻》讲述了一个什么样的故事? 日本漫画《千与千寻》《龙猫》等等的作者是谁 日本有个漫画里女主角叫千寻、这个漫画名叫什么? 有《千与千寻》这本书吗? 林碧春非洲二女儿现状是什么? 林碧春嫁的国王喜欢腿揣是什么意思? 嫁给非洲总统的林碧春,后来生活怎样? 18岁女孩林碧春,不顾反对嫁给非洲暴君,父母再见时怎样了? 非洲暴君爱上中国女孩,将她带回非洲封王妃,生下一儿子后来如何? 当年她在街上游玩,被非洲总统看中接回国当皇后,结局如何? 还记得那个嫁给“非洲暴君”生下2子的中国女孩,回国后现状如何? 酒店服务员林碧春嫁到非洲,成了总统夫人,为何很快就急着回家? 那位远嫁非洲当皇后的18岁女孩林碧春,如今过得怎样? 18岁中国女孩与国王一见钟情,远嫁非洲成第9位王妃,现状如何? 林碧春王妃现状如何? 非洲暴君求婚18岁台湾少女,是一见钟情还是见色起意? “千与千寻”的内容简介 require(),include(),require_once()和include_once()区别 《千与千寻》究竟是一部怎样的作品? c语言的9种控制结构都有哪些以及45个标准运算符 千与千寻有没有漫画版 求C语言大神写一个下题的系统分析和程序结构流程图 请大家评论一下《千与千寻》 c语言 数据结构编程 图状结构的应用 宫崎骏,千与千寻 《千与千寻》的隐喻和它人物的隐喻 千与千寻这漫画蕴含这什么 C语言题目 求解释 软件系统结构图的宽度的意思 寻找千与千寻的作者信息 千与千寻漫画版下载 有没有什么手套是很薄的、带着和没戴似的 有没有一种护手手套,比较薄,质量又好的? 请问大家上班忘记打卡了,怎么填签卡单,满意的我给分 什么材质的手套比较薄又保暖 在小D协同上签卡单怎么作废 我去年有几天下班没打到卡,我没写签卡单自己签了卡,公司说我违反制度