交换链表元素

时间:2017-12-02 04:57:11

标签: c++ linked-list

我尝试按如下方式交换链表中的两个节点:

void swapTwo(course*& first, course*& second)
{
    auto temp = first;
    first = second; 
    second = temp;
    second->next = first->next;     // error right here due to self-referencing
    first->next = second;
}

我收到错误,因为second-> next已经自我引用了。有一个优雅的解决方案吗?我可以创建2个课程元素并重新构建第一个和第二个,但这看起来很粗鲁。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要考虑多个方案。

  1. 当两者不相邻时,它们中的任何一个都不是头部或尾部
  2. 当他们相邻时
  3. 当头或尾都是
  4. 当一个是头部而另一个是尾巴时
  5. 当他们是链表中的唯一两个。