描述
翻转一个链表
您在真实的面试中是否遇到过这个题? 是
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
挑战
翻转一个链表
您在真实的面试中是否遇到过这个题? 是
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
挑战
在原地一次翻转完成
程序
/**
* Definition of singly-linked-list:
*
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: n
* @return: The new head of reversed linked list.
*/
ListNode * reverse(ListNode * head) {
// write your code here
if(head == NULL)
return NULL;
ListNode * prev = NULL;
ListNode * cur = head;
while(cur != NULL){
//保证下一个节点不断
ListNode * tmp = cur->next;
//当前的指针指向前一个节点。刚开始时前一个节点为空
cur->next = prev;
//改头换面,重新来
prev = cur;
cur = tmp;
/*等价于prev = tmp;
cur = tmp;
prev = cur;
*/
}
return prev;
}
};