c++ - 循环链表中不能交换尾节点和首节点
问题描述
我遇到麻烦的功能是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
解决方案
推荐阅读
- character-encoding - 为什么 common-io 工具 IOUtils.toByteArray 不一样?
- javascript - 如何控制 QML 中大数字的 fromat,例如 (-715827883)
- ios - 在 Xcode 中在构建时添加变量
- linux - 字符串替换模式匹配在 bash 脚本中不起作用
- angular - 即使服务器无法访问,也可以模拟服务器响应
- oracle - 使用 groovy 在 oracle 数据集成器中创建加载计划
- haskell - 有没有办法“删除”函子中不存储其参数的部分?
- php - 使用 php 邮件处理程序向用户输入的电子邮件地址发送电子邮件
- typescript - “NeedAuthGuard”类错误地实现了“CanActivate”类。您的意思是扩展“CanActivate”并将其成员作为子类继承吗?
- php - 在不使用 mysql 服务器资源的情况下加密数据的最佳方法是什么?使用 CFB 模式的 mcrypt 是使用 php 的最佳方式吗?