头插法和迭代反转链表的区别是什么?并附上相关代码Java
头插法和迭代反转链表的区别在于实现思路和操作过程。
- 头插法: 头插法是一种在链表头部插入节点的方法,通过遍历链表,将每个节点插入到头节点之前,从而实现链表的反转。具体步骤如下:
- 创建一个新的空链表作为反转后的链表。
- 遍历原始链表,将每个节点插入到新链表的头部。
- 返回新链表作为反转后的链表。
- 迭代反转链表: 迭代反转链表是一种通过修改节点指针指向来实现链表反转的方法。具体步骤如下:
- 初始化三个指针:prev指向null,curr指向头节点,next指向curr的下一个节点。
- 在每次迭代中,将curr的next指针指向prev,然后将prev指向curr,curr指向next,再将next指向next的下一个节点。
- 重复上述步骤,直到curr指向null,此时prev指向反转后的链表的头节点。
以下是Java代码示例:
头插法实现链表反转:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode newHead = null;
while (head != null) {
ListNode next = head.next;
head.next = newHead;
newHead = head;
head = next;
}
return newHead;
}
}
迭代反转链表:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
}
``
原文地址: https://www.cveoy.top/t/topic/irUU 著作权归作者所有。请勿转载和采集!