首页 > c/c++, LeetCode, 算法, 面试 > LeetCode面试题之单链表逆序

LeetCode面试题之单链表逆序

2016年7月12日 758 人阅读 发表评论 阅读评论

1.算法概述

遍历链表,并在遍历的过程中修改当前节点cur的next指针,使当前节点cur的next指针指向当前节点的前驱节点pre,遍历完之后pre指针就是逆序后链表的头指针。

2.图解

  • 初始化

  • 遍历节点
  • 遍历结束

3.代码实现

/**
 * 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;
        ListNode * cur = head;
        while (head)
        {
            head = head->next;
            cur->next = pre;
            pre = cur;
            cur = head;
        }
        return pre;
    }
}; 

4.OJ练习

LeetCode:https://leetcode.com/problems/reverse-linked-list/

分类: c/c++, LeetCode, 算法, 面试 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.