跳到主要内容

简述Java实现单链表删除当前节点 ?

参考答案:

在Java中,实现单链表的删除操作需要遵循几个步骤。首先,你需要定义单链表的数据结构,通常是一个节点类,其中包含一个数据元素和一个指向下一个节点的引用。然后,你可以实现一个方法来删除指定位置的节点。

下面是一个简单的示例,演示了如何在Java中实现单链表的删除操作:

public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }
}

public class LinkedList {
    ListNode head;

    // 插入节点到链表末尾
    public void append(int val) {
        ListNode node = new ListNode(val);
        if (head == null) {
            head = node;
        } else {
            ListNode current = head;
            while (current.next != null) {
                current = current.next;
            }
            current.next = node;
        }
    }

    // 删除指定位置的节点
    public void deleteNode(int position) {
        if (head == null) {
            return; // 链表为空,无需删除
        }

        if (position == 0) {
            head = head.next; // 删除头节点
            return;
        }

        ListNode current = head;
        for (int i = 0; i < position - 1; i++) {
            if (current.next == null) {
                return; // 位置超出链表长度
            }
            current = current.next;
        }

        if (current.next != null) {
            current.next = current.next.next; // 删除指定位置的节点
        }
    }

    // 打印链表
    public void printList() {
        ListNode current = head;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.append(1);
        linkedList.append(2);
        linkedList.append(3);
        linkedList.append(4);
        linkedList.append(5);

        System.out.println("原始链表:");
        linkedList.printList();

        System.out.println("删除位置2的节点:");
        linkedList.deleteNode(2);
        linkedList.printList();
    }
}

在这个示例中,ListNode 类表示链表中的节点,包含数据元素 val 和指向下一个节点的引用 nextLinkedList 类包含链表的头节点 head,以及用于操作链表的方法,如 append(在链表末尾插入节点)和 deleteNode(删除指定位置的节点)。printList 方法用于打印链表的内容。

deleteNode 方法接受一个整数参数 position,表示要删除的节点的位置。它首先检查链表是否为空,然后处理删除头节点和删除指定位置节点的逻辑。注意,链表的索引从0开始,因此位置0表示头节点。

main 方法中,我们创建了一个 LinkedList 实例,并添加了一些节点。然后,我们打印原始链表,调用 deleteNode 方法删除位置2的节点,并再次打印链表以验证删除操作是否成功。