Мне нужно создать функцию, которая принимает обычный односвязный список и создает другой список в обратном порядке первого списка, первый элемент в новом списке будет последним элементом в исходном списке и так далее.
Моя функция по какой-то причине только и снова возвращает одно и то же число снова и снова для всего нового списка.Поэтому, если последнее число в моем исходном списке, например, «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;
}