我做了一个算法来反转我的链表。原始列表看起来像 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/