我正在尝试颠倒以下链接列表的顺序,我已经这样做了,但是颠倒的列表似乎没有打印出来.我哪里错了?
Im trying to reverse the order of the following linked list, I've done so, But the reversed list does not seem to print out. Where have I gone wrong?
//reverse the linked list
#include <iostream>
using namespace std;
struct node{
int number;
node *next;
};
node *A;
void addNode(node *&listpointer, int num){
node *temp;
temp = new node;
temp->number = num;
temp->next = listpointer;
listpointer = temp;
}
void reverseNode(node *&listpointer){
node *temp,*current;
current = listpointer;
temp = new node;
while (true){
if (current == NULL){
temp = NULL;
break;
}
temp->number = current->number;
current = current->next;
temp = temp->next;
}
listpointer = temp;
}
int main(){
A = NULL;
addNode(A,1);
addNode(A,2);
addNode(A,3);
while (true){
if (A == NULL){break;}
cout<< A->number << endl;
A = A->next;
}
cout<< "****" << endl;
reverseNode(A);
while (true){
if (A == NULL){break;}
cout<< A->number << endl;
A = A->next;
}
cout<< "****"<< endl;
return 0;
}
嗯,我注意到的第一件事就是你在做什么
Well, the first thing I notice is that you are doing
temp = 新节点
然后,在每次互动中:
temp = temp->next
temp = temp->next
但你永远不会分配 temp->next
but you are never assigning temp->next
因此,当您最终覆盖列表指针时,您肯定会返回一些有趣的值.
so when you finally override the list pointer you are surely giving back some funny value.
这篇关于反转链表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!