求这道c++题目的详细解释,看不懂第二句对a的赋值

 我来答
帐号已注销
2016-09-19 · 超过87用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:114万
展开全部
很简单,struct st a[3],声明一个包含三个元素的结构体数组,并使用列表初始化,
={1,//a[0].n = 1
&a[1],//a[0].next = &a[1],将第二个结构体的地址赋值给第一个结构体的指针
3,//同理a[1].n = 3
&a[2]//同理
5//a[2].n=5
&a[0]//同理
}
事实上这就是创建了一个物理地址连续的循环链表,首尾相连并且将首地址赋值给a
匿名用户
2016-09-19
展开全部

第二行准确说是对a的初始化,。

这个初始化将a初始化成了一个循环的链表。其等价于:

struct st a[3]={{1,&a[1]},{3,&a[2]},{5,&a[0]}};

也就是相当于:

a[0].n = 1; a[0].next = &a[1];
a[1].n = 3; a[1].next = &a[2];
a[2].n = 5; a[2].next = &a[0];

a[0].next = &a[1]; 那就是让 a[1]作为a[0]的下一个;

a[1].next = &a[2]; 那就是让 a[2]作为a[1]的下一个;

a[2].next = &a[0]; 那就是让 a[0]作为a[2]的下一个;

至此,循环单链表形成了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式