📜  门| GATE CS 2008 |第62章

📅  最后修改于: 2021-07-02 16:17:15             🧑  作者: Mango

以下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;
  }
}

(A) 1,2,3,4,5,6,7
(B) 2,1,4,3,6,5,7
(C) 1,3,2,5,4,7,6
(D) 2,3,4,5,6,7,1

答案: (B)
解释:

给定的链表是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提供
这个问题的测验