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;
}
}发布于 2013-12-10 17:32:54
您的标题询问有关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设置为零。“
发布于 2013-12-10 16:52:34
P和q都指向相同的结构。他们是不同的名称结构!
https://stackoverflow.com/questions/20500294
复制相似问题