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); }}

代码解释:

  1. ListNode类: 表示链表中的一个节点,包含存储整数值的val和指向下一个节点的指针next。2. deleteNodes方法: - 首先处理头节点,如果头节点的值等于x,则将头指针指向下一个节点,直到头节点的值不等于x。 - 然后,使用两个指针currentprev遍历链表。 - 如果current节点的值等于x,则将prev节点的next指针指向current节点的下一个节点,从而删除current节点。 - 否则,将prev指针移动到current节点的位置。 - 最后,返回新的头节点。3. printList方法: 遍历链表并打印每个节点的值。4. main方法: 创建一个示例链表,调用deleteNodes方法删除值为2的节点,并打印结果。

总结:

上述代码提供了一个简单易懂的解决方案,用于从整数单链表中删除所有值为x的节点。通过使用两个指针遍历链表,我们可以高效地找到并删除目标节点。

Java实现删除单链表中所有值为x的节点

原文地址: https://www.cveoy.top/t/topic/WUl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录