标签:步骤 关系链 链表 https 技术 html hub color ima
由于链表具有天然的递归结构,反转链表其实很容易想到递归的方式。这里暂不说了。说一下非递归的方式
由于链表的next维持关系链的关键。反转的过程就需要用额外的指针指向当前节点的前一节点和后一节点,不然的话就会发生断链了。
图示:
具体步骤伪代码可为:
1. pNext指向当前节点的next以保持链 pNext = current.next;
2.当前节点的nextf指向前一节点(开始反转)current.next = prev
3. prev 指针指向当前指针(即往后)prev = current
4. 当前的指针也往后 current = pNext;
步骤繁琐点帮助理解,其实当前节点的指针其实就是head节点了。
代码:
public class Solution { public ListNode reverseList(ListNode head) { //空判断 if(head == null) return head; //3个节点分别指向前一节点,当前节点,下一节点。 ListNode prev = null; ListNode current = head; ListNode pNext; //结束条件就是current节点成为了null时,那么prev节点就成为反转后的头节点了。 while(current!=null){ pNext = current.next; current.next = prev; prev = current; current = pNext; } return prev; } }
public class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next ==null) return head; ListNode prev = reverseList(head.next); head.next.next = head; head.next = null; return prev; } }
图片来源:https://www.cnblogs.com/csbdong/p/5674990.html
标签:步骤 关系链 链表 https 技术 html hub color ima
原文地址:https://www.cnblogs.com/fabaogege/p/10325515.html