【发布时间】:2019-02-12 01:37:10
【问题描述】:
我需要创建一个函数,它接受一个普通的单链表并以第一个列表的相反顺序创建另一个列表,新列表中的第一个元素将是原始列表中的最后一个元素,依此类推。
由于某种原因,我的函数只会一遍又一遍地为整个新列表返回相同的数字。因此,如果我原始列表中的最后一个数字是例如“50”,新名单将完全由“50”组成。
这是我的代码,我做错了什么?如果有人想让我发布整个程序以获得更清晰或上下文的信息,请大声告诉我。
void invert() {
node *list1=top,*newlist,*temp,*prev;
while (list1->next!=NULL) {
list1=list1->next;
}
newlist=new node;
newlist->num=list1->num;
newlist->next=NULL;
if (top2==NULL) {
top2=newlist;
}
else {
for (temp=top2;temp!=NULL;temp=temp->next) {
prev=temp;
}
prev->next=newlist;
}
list1->next=NULL;
}
【问题讨论】:
-
向前遍历 from 列表。对于每个节点,复制它并将副本插入到列表的头部。
标签: c++ list linked-list reverse singly-linked-list