【发布时间】:2017-06-09 19:20:08
【问题描述】:
我被我在考试模拟中发现的这段代码卡住了:
struct node{
int val;
struct node* next;
};
struct node* list;
struct node* function (struct node* p){
struct node *temp, *prec = NULL;
if (p!=NULL){
while(p->next!=NULL){
temp=prec;
prec=p;
p=p->next;
prec->next=temp;
}
p->next=prec;
}
return p;
}
我尝试编译它,显示的输出是一个反向列表。例如:如果我的列表由 1,2,3 和 4 组成。显示的输出是 4,3,2 和 1。我的问题是:谁能解释一下 while 循环中发生了什么?
【问题讨论】:
-
根据哪个规范正确?
-
我测试中的问题是:根据输入中给出的列表,运行“list = function (list);”后的列表是什么声明?
-
那么……你的“问题”不是在回答这个问题吗?
-
当然,但我不明白为什么。 while 循环中的语句对我来说不是很清楚。
-
拿一张纸,画一个清单,看看发生了什么,哪个变量指向哪里