定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
复习:
#include <iostream>
using namespace std;
//p1->p2->p3->p4;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *p1,*p2,*p3;
p1 = NULL;
p2 = head;
while(p2!=NULL){
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
return p1;
}
};
int main(){
ListNode *head = new ListNode(0);
ListNode *tmp = head;
for(int i=1;i<=5;i++){
ListNode *temp = new ListNode(i);
tmp->next = temp;
tmp = tmp->next;
}
Solution *ps = new Solution();
ListNode *rever =ps->reverseList(head->next);
while(rever!=NULL){
cout<<rever->val<<endl;
rever = rever->next;
}
return 0;
}