链表-翻转链表-简单

描述
翻转一个链表
您在真实的面试中是否遇到过这个题?  是
样例
给出一个链表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;
    }
};



猜你喜欢

转载自blog.csdn.net/qq_18124075/article/details/80922031