当前位置:   article > 正文

206.反转链表( 三(双)指针法 )_leetcode c++ 反转链表 三指针法

leetcode c++ 反转链表 三指针法
解题思路

1.三指针法:两个指针指向局部反转的两个节点操作反转,另外一个指针tmp保存其后链表的地址,反转前先用tmp保存地址,反转后指针2赋值给指针1,指针tmp赋值给指针2。
2.这里实际操作的是指针1和指针2,跳出while的条件用其中后面的那一个。
3.这里要注意原来的第一个节点反转后要指向NULL,只要将NULL也视为一个节点,指针1的初始值赋值为NULL即可统一操作。

代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 
struct ListNode* reverseList(struct ListNode* head){
    struct ListNode *p = NULL;
    struct ListNode *q = head;
    while(q)
    {
        struct ListNode *tmp = q->next;
        q->next = p;
        p = q;
        q = tmp;
    }
    return p;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1016831
推荐阅读
相关标签
  

闽ICP备14008679号