p
和q
都是node*
。但是我很困惑这个任务代表什么?
struct node
{
int value;
struct node *next;
};
void rearrange(struct node *list)
{
struct node *p,*q;
int temp;
if (!list||!list->next) return;
p=list;
q=list->next;
while(q)
{
temp=p->value;
p->value=q->value;
q-value=temp;p=q->next;
q=p?p->next:0;
}
}
答案 0 :(得分:2)
您的标题询问p=q
,但您发布的代码中没有此类作业。
赋值p=q;
会将指针p
设置为与指针q
具有相同的值。因此,p
和q
都指向同一个地方,地点q
指向分配之前。
您的代码包含一个声明q=p?p->next:0;
。这会将表达式p ? p->next : 0
分配给q
。表达式以这种方式评估:
p
不为零,则表达式的值为p->next
。p
为零,则表达式的值为0
。因此,分配等同于“如果p
指向对象(不为零),则将q
设置为p->next
。否则,请将q
设置为零。“
答案 1 :(得分:0)
p和q都指向相同的结构。 它们是结构的不同名称!