zoukankan      html  css  js  c++  java
  • 反转链表

    leetcode-206.   反转一个单链表
    这里我们用到的方法是三指针法。

    1.首先创建3个指针,分别指向头结点,头结点的前一个结点,头结点的下一个结点

     2.转变指针的方向,即将P2指向P1这样我们就可以将左边的看作一个新的链表,头结点为1,指向NULL

    3.这时候我们移动P1,使P1=P2,将P1作为头结点,方便下一次的P2转向

     

    4.挪动P2指针,为下一次转变指针方向做准备(这里就可以看出P3的作用是使右边的链表不至于丢失,为P2提供了下一次挪动的地址)

     

    5.P3完成了使命,继续往前走,循环。上几步的操作

     

     6.大体思路就是这样,我们要注意的是到最后走到NULL时停下来的控制。

    下图是走到后面的场景,我们可以看到此时P3和P2都走到了最后,我们要做的就是让循环停在这里,所以我们的循环条件就是P2!=NULL。

    为什么不是P3呢,因为P3是先走到NULL值之后P2才改变了方向走到NULL的。

     

    7.最后因为只有P1在头结点,所以返回P1

    下面是具体的代码

    /**
    * Definition for singly-linked list.
    * struct ListNode {
    * int val;
    * struct ListNode *next;
    * };
    */
    struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode *pre = NULL; // P1指针
    struct ListNode *cur = head; //P2指针
    while(cur)
    {
    struct ListNode *next = cur->next; ///P3指针

    cur->next = pre; //这一步很重要:反转
    pre = cur;
    cur = next;
    }
    return pre; //返回P1
    }
     运行结果:

    原文:https://blog.csdn.net/qq_36791466/article/details/88766450

  • 相关阅读:
    使用python写天气预告
    beef配合ettercap批量劫持内网的浏览器
    html布局
    python 使用paramiko模块上传本地文件到ssh
    mysql一些函数的记录
    python与ssh交互
    html笔记4
    html笔记3
    html笔记2
    html笔记1
  • 原文地址:https://www.cnblogs.com/xqy-yz/p/11279445.html
Copyright © 2011-2022 走看看