📜  数据结构 |链表 |问题 8

📅  最后修改于: 2021-09-08 13:52:13             🧑  作者: 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;
  }
}

(一) 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答案:(乙)
说明:函数rearrange()与其下一个节点交换每个节点的数据。它开始从第一个节点本身交换数据。
这个问题的测验