java如何实现反转列表

avatar
作者
筋斗云
阅读量:0

可以使用递归或迭代的方式来实现反转链表。

递归方式:

class ListNode {     int val;     ListNode next;     ListNode(int val) {         this.val = val;     } }  public class Solution {     public ListNode reverseList(ListNode head) {         // 如果链表为空或只有一个节点,无需反转,直接返回原链表头节点         if (head == null || head.next == null) {             return head;         }                  ListNode newHead = reverseList(head.next); // 反转以head.next为头节点的子链表         head.next.next = head; // 将head节点连接到反转后的子链表的尾部         head.next = null; // 将head节点的next置为null                  return newHead; // 返回新的头节点     } } 

迭代方式:

class ListNode {     int val;     ListNode next;     ListNode(int val) {         this.val = val;     } }  public class Solution {     public ListNode reverseList(ListNode head) {         // 如果链表为空或只有一个节点,无需反转,直接返回原链表头节点         if (head == null || head.next == null) {             return head;         }                  ListNode prev = null; // 当前节点的前一个节点         ListNode curr = head; // 当前节点                  while (curr != null) {             ListNode next = curr.next; // 当前节点的下一个节点             curr.next = prev; // 反转指针指向前一个节点             prev = curr; // 更新当前节点的前一个节点             curr = next; // 更新当前节点为下一个节点         }                  return prev; // 返回新的头节点     } } 

以上是两种常见的反转链表的实现方式。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!