小编Ker*_*ael的帖子

交换双链表中的节点

我正在尝试实现一个交换双链表的两个节点的函数,以便对当前目录的内容进行排序。但是我的函数似乎“删除”了我列表中的一些元素,这是代码:

void node_swap(struct s_node *left, struct s_node *right)
{
  struct s_node *tmp;

  tmp = left->prev;
  if (tmp)
   {
      tmp->next = right;
      right->prev = tmp;
   }
  else
      right->prev = NULL;

  left->prev = right;
  left->next = right->next;
  right->next = left;
  right->next->prev = left->prev;
}
Run Code Online (Sandbox Code Playgroud)

我看不出这有什么问题?

c linked-list

2
推荐指数
2
解决办法
3万
查看次数

标签 统计

c ×1

linked-list ×1