下面的 C函数将整数的单链表作为参数并重新排列列表的元素。使用包含给定顺序的整数 1、2、3、4、5、6、7 的列表调用该函数。函数执行完成后列表的内容是什么?
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;
}
}
(一) 1,2,3,4,5,6,7
(乙) 2,1,4,3,6,5,7
(C) 1,3,2,5,4,7,6
(四) 2,3,4,5,6,7,1
答案:(乙)
解释:
给定链表是 1->2->3->4->5->6->7
如果你仔细观察给定的函数,
它只是交换每一对的相邻值,直到它到达末尾。
修改后的链表为2->1->4->3->6->5->7
参见 https://www.geeksforgeeks.org/data-structures-and-algorithms-set-15/ 的问题 4
该解决方案由Anil Saikrishna Devarasetty 提供
这个问题的测验