Leetcode剑指 Offer 24. 反转链表
题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
方法一:双指针
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
//不带头结点
ListNode *pre=NULL,*p=head;
while(p!=NULL){
ListNode *temp=p->next;//暂存下个结点
p->next=pre; //将当前结点的next指向上个结点
pre=p; //将pre指向当前结点
p=temp; //再将下个结点赋给p
}
return pre; //返回pre 就是“头””指针
}
};