能把带斜杠的解释下吗,谢谢

华山论剑2014 2013-05-14 06:38:14
#include<iostream>
struct LIST
{
int a;
LIST* back;
};
int main()
{
int n;
scanf("%d",&n);
LIST *list=new LIST[n];
for(int i=0;i<n;i++)
{
list[i].a=i+1;//
if(i!=n-1)//
list[i].back=&list[i+1];//
else
list[i].back=&list[0];//
}
LIST *P=&list[n-1];//

for(int k=0;k<n-1;k++)
{
P=P->back->back->back;//
P->back=P->back->back;//
}
printf("%d\n",P->a);
std::cin.get();
std::cin.get();
return 0;
}
...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
华山论剑2014 2013-05-14
  • 打赏
  • 举报
回复
谢谢大神回答,很效率
疯狂的红豆 2013-05-14
  • 打赏
  • 举报
回复

#include<iostream>
struct LIST
{
	int a;
	LIST* back;
};
int main()
{
	int n;
	scanf("%d",&n);
	LIST *list=new LIST[n];//显示开辟了n个LIST结点
	for(int i=0;i<n;i++)
	{
		list[i].a=i+1;//这是为第i个(从0数)LIST结点的数据域a赋值
		if(i!=n-1)//出于这个判断是为了形成一个环形链表,在i不等于n-1(也就是不是最后一个)的时候
			list[i].back=&list[i+1];//都是把list数组中的后一个元素(这里指的是LIST对象)的地址赋到前一个元素的指针域中,这样子就形成了链接关系
		else
			list[i].back=&list[0];//如果是最后一个结点的话,那就把第一个结点的地址赋给其指针域,以此形成了一个环形的LIST元素链表
	}
        //之前是通过赋值语句形成了一个环形链表
	LIST *P=&list[n-1];//定义LIST指针,用于指向list数组的最后一个元素
	
	for(int k=0;k<n-1;k++)
	{
		P=P->back->back->back;//原本指向list数组的最后一个元素,现在将p指向修改,改成了指向后面的第三个,因为他是环形的,所以最后一个元素的后一个就是第0个了
		P->back=P->back->back;//然后在对(p->pack,这其实是p所指向的元素的pack域中的值)的指向做一次修改,这次是在上一句的基础上,把pack->back的值修改成p的后面数第二个
	}
        //以上两句代码,循环执行n-1次,最后输出了p所指向元素中的a值
        //这代码应该是在考察链表的组织结构
	printf("%d\n",P->a);
	std::cin.get();
	std::cin.get();
	return 0;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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