反转链表(剑指Offer-24)
题面
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例
1输入: 1->2->3->4->5->NULL 2输出: 5->4->3->2->1->NULL
限制
10 <= 节点个数 <= 5000
思路
链表原地转置。
代码
1/**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9class Solution {
10public:
11 ListNode* reverseList(ListNode* head) {
12 ListNode *h=NULL, *pre=head, *last=head;
13 while(pre){
14 last = last->next;
15 pre->next = h;
16 h = pre;
17 pre = last;
18 }
19 return h;
20 }
21};