c++ - 反向链表算法

标签 c++ algorithm linked-list

我做了一个算法来反转我的链表。原始列表看起来像 7 5 6 我想将其反转为 5 6 7 。但是在反向函数后打印链表时,我只看到 5

NodeType * temp = start;
int dataHolder[length] = {0};
int runTime = length - 1;

for(int i = 0; i<length; i++){
    if(temp->next == NULL){
        break;
    }

    dataHolder[runTime] = temp->data;
    temp = temp->next;
    runTime--;
}

for(int j = 0; j<length; j++){
    if(start->next == NULL){
        break;
    }

    start->data = dataHolder[j];
    start = start->next;
}

最佳答案

您的算法不起作用,因为 在第一个循环中 前 n-1 个节点中的数据被复制到数组 dataHolder 然后在第二个循环中,将数组以与检索数组相同的顺序复制到链表中。

此外,您正在编辑“开始”变量,这是对列表开头的唯一引用

在第二个循环结束时开始指向列表中的倒数第二个节点

并且您使用相同的“开始”变量显示链表

为您输入的数据
7->5->6
处理第一个循环后 在数据持有者中
7 5
将其复制到链接列表中。 链表现在是
7->5
但开始指向 5

使用 start 显示链表 很明显 5只会被打印

关于c++ - 反向链表算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44701139/

相关文章:

c++ - std::vector 结构的 MPI BCast(广播)

algorithm - 搜索最大值

c++ - 链表的返回元素

java - 检查链表是否是回文-我在这里缺少什么?

java - 如何让我的 Java 程序终止?

c++: 将变量单位的 std::chrono 转换为秒

c++ - 如何在 boost 图中添加彩色边?

c++ - 帮助在 std::map 中存储模板类的 intrusive_ptr

PHP 修改数组

Java - 根据另一个数组的值对一个数组进行排序?