#include <iostream>
using namespace std;
struct ListNode{
int val;
struct ListNode *next;
ListNode(int x):
val(x), next(nullptr){}
};
ListNode* ReverseList(ListNode *pHead){
if(!pHead) return nullptr;
ListNode *fakeEnd = nullptr, *cur = pHead, *fakeHead = pHead->next;
while(cur){
cur->next = fakeEnd;
fakeEnd = cur;
cur = fakeHead;
if(fakeHead)
fakeHead = fakeHead->next;
}
return fakeEnd;
}
int main(){
ListNode *p = new ListNode(3);
p->next = new ListNode(5);
p->next->next = new ListNode(7);
p->next->next->next = new ListNode(9);
ListNode *ans = ReverseList(p);
while(ans){
cout<<ans->val<<' ';
ans = ans->next;
}
}
输出
# toto @ tt in ~/algorithms [19:14:21]
$ ./reverseList
9 7 5 3 %