反转链表

tech2024-06-07  61

1.反转链表

链表:

方法一:循环解法思路:

代码:

public ListNode reverseList(ListNode head) { if(head == null||head.next==null){ return head; } ListNode newHead = null; while (head!=null){ ListNode tmp = head.next; head.next = newHead; newHead = head; head = tmp; } return newHead; }

1 先判断链表是否为空或者只有一个节点:若是,直接返回即可

2 用一个新的头指针,和一个过度的指针,返回将head所指向的节点给连接到新的头指针下面。

方法二:递归

先判断链表是否为空或者只有一个节点:若是,直接返回即可。这个也是结束递归的条件

先理解每次放进去调用反转链表的方法的结果,再补充即可

每次调用方法之后传回来的如第一个链表所示

再让head.next.next指向head,head执行null即可

代码:

public ListNode reverseList(ListNode head) { if(head == null||head.next==null){ return head; } ListNode newHead = reverseList(head.next); head.next.next=head; head.next = null; return newHead; }
最新回复(0)