Java实现删除单链表中所有值为x的节点
Java实现删除单链表中所有值为x的节点
本文提供了一个Java代码示例,演示如何从整数单链表中删除所有值为x的节点。
**代码示例:**javaclass ListNode { int val; ListNode next; ListNode(int val) { this.val = val; this.next = null; }}
public class LinkedList { public ListNode deleteNodes(ListNode head, int x) { // 处理头节点 while (head != null && head.val == x) { head = head.next; }
ListNode current = head; ListNode prev = null;
while (current != null) { if (current.val == x) { // 删除节点 prev.next = current.next; } else { prev = current; } current = current.next; }
return head; }
public void printList(ListNode head) { ListNode current = head; while (current != null) { System.out.print(current.val + ' '); current = current.next; } }
public static void main(String[] args) { LinkedList list = new LinkedList();
ListNode head = new ListNode(1); ListNode node1 = new ListNode(2); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(1);
head.next = node1; node1.next = node2; node2.next = node3; node3.next = node4;
int x = 2;
System.out.println('原始链表:'); list.printList(head);
head = list.deleteNodes(head, x);
System.out.println('
删除值为 ' + x + ' 的节点后的链表:'); list.printList(head); }}
代码解释:
- ListNode类: 表示链表中的一个节点,包含存储整数值的
val和指向下一个节点的指针next。2. deleteNodes方法: - 首先处理头节点,如果头节点的值等于x,则将头指针指向下一个节点,直到头节点的值不等于x。 - 然后,使用两个指针current和prev遍历链表。 - 如果current节点的值等于x,则将prev节点的next指针指向current节点的下一个节点,从而删除current节点。 - 否则,将prev指针移动到current节点的位置。 - 最后,返回新的头节点。3. printList方法: 遍历链表并打印每个节点的值。4. main方法: 创建一个示例链表,调用deleteNodes方法删除值为2的节点,并打印结果。
总结:
上述代码提供了一个简单易懂的解决方案,用于从整数单链表中删除所有值为x的节点。通过使用两个指针遍历链表,我们可以高效地找到并删除目标节点。
原文地址: https://www.cveoy.top/t/topic/WUl 著作权归作者所有。请勿转载和采集!