gpt4 book ai didi

c++ - 反向链表

转载 作者:行者123 更新时间:2023-11-27 23:19:16 29 4
gpt4 key购买 nike

<分区>

我正在实现一个带指针的链表。
我需要反转链表,所以我写了rotate(List &l)
但我没有得到我期望的结果。
由于输入是
0 1 2 3 4 5 6 7 8 9
我希望
9 8 7 6 5 4 3 2 1 0
结果,但我得到了
0 9 8 7 6 5 4 3 2 1

既然我找不到我做错了什么,你能指出我哪里不对吗?问题似乎从这里开始:(旋转)

while(end->next !=0){
end = end->next;
}

我知道第一个节点是最后一个节点(因为 cout << end->d; 给我 0 而不是 9)

#include<iostream>

using namespace std;

typedef class Node *List;
struct Node{
int d;
List next;
};
//update : renamed
void reverse(List &l){
/*
start :
a b c d e

b c d e **a**
c d e **b** a
d e **c** b a
Result:
e **d** c b a
*/

// get last node
List end = l;
while(end->next !=0){
end = end->next;
}
//insert first node directly after the original last node
while(l!=end){
List hulp = l;
l = hulp->next;
hulp->next = end->next;
end->next=hulp;
}
}
int main(){
List l = new Node();
int i = 0;
List k = l;
while (i < 10)
{
k->d = i;
k->next = new Node();
k = k->next;
i++;
}
List m = l;
while ( m->next !=0 )
{
cout << m->d << endl;
m = m->next;
}
reverse(l);
m = l;
while ( m->next !=0 )
{
cout << m->d << endl;
m = m->next;
}
}

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com