首页 > 解决方案 > 循环链表中不能交换尾节点和首节点

问题描述

我遇到麻烦的功能是void swapTailAndHead. 我的链表结构只有一个指针Node* tail

主.cpp:

void swapTailtoHead()
{
    if(tail == NULL)
        return;
    else if(justHaveTail())
    {
        return;
    }
    else if(countNode() == 2)
    {
        tail = tail->next;
    }
    else
    {
        Node* current = tail;
        while(current->next != tail)
            current=current->next;
        current->next = tail->next;
        tail = current->next;
        //std::cout<<current->data;
        tail->next = current->next->next;
        current = current->next->next;
    }
}

我的测试用例输入是1 2 3 4 ,我的错误输出是2 3 1

我希望交换节点不交换数据。我的输入1 2 3 4和我想要的输出是4 2 3 1

标签: c++algorithmdata-structurescircular-list

解决方案


推荐阅读