我正在尝试实现一个交换双链表的两个节点的函数,以便对当前目录的内容进行排序。但是我的函数似乎“删除”了我列表中的一些元素,这是代码:
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)
我看不出这有什么问题?