Java 单链表节点删除操作

单链表是一种基础的数据结构,它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。在实际开发中,可能会遇到需要删除链表中某个节点的场景。本文将介绍如何在 Java 中实现单链表的节点删除,并提供相应的代码示例。

单链表的基本结构

在实现删除节点的操作之前,首先需要定义单链表的基本结构。每个节点(Node)通常包含两个部分:数据部分和指向下一个节点的引用。

以下是一个简单的Node类定义:

class Node {
    int data;  // 节点中的数据
    Node next; // 指向下一个节点的引用

    Node(int data) {
        this.data = data;
        this.next = null;
    }
}

接下来,我们需要创建一个链表的类(LinkedList),其中包含删除节点的方法。

删除节点的方法

在单链表中删除节点主要有两种情况:

  1. 删除的节点不是头节点。
  2. 删除的节点是头节点。

下面是一个完整的链表类及其节点删除方法:

class LinkedList {
    Node head; // 链表的头节点

    // 添加节点到链表
    public void add(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
        } else {
            Node current = head;
            while (current.next != null) {
                current = current.next;
            }
            current.next = newNode;
        }
    }

    // 删除指定值的节点
    public void delete(int key) {
        Node current = head;
        Node previous = null;

        // 如果头节点是要删除的节点
        if (current != null && current.data == key) {
            head = current.next; // 修改头节点
            return;
        }

        // 查找要删除的节点
        while (current != null && current.data != key) {
            previous = current;
            current = current.next;
        }

        // 如果未找到节点
        if (current == null) {
            return;
        }

        // 解除对节点的引用
        previous.next = current.next;
    }

    // 打印链表
    public void printList() {
        Node current = head;
        while (current != null) {
            System.out.print(current.data + " -> ");
            current = current.next;
        }
        System.out.println("NULL");
    }
}

示例演示

下面是一个简单的示例,演示如何使用 LinkedList 类来添加和删除节点:

public class Main {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        
        // 添加节点
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("原链表:");
        list.printList(); // 打印链表

        // 删除节点
        list.delete(3);
        System.out.println("删除节点3后的链表:");
        list.printList(); // 打印链表
    }
}

示例代码中,我们首先创建了一个链表,添加了一些节点,然后删除了值为3的节点,并打印出删除后的链表。

项目进度计划

下面是一个简单的项目进度甘特图,描述了实现单链表删除节点的各个阶段。

gantt
    title 单链表节点删除项目进度
    dateFormat  YYYY-MM-DD
    section 需求分析
    确定功能需求           :a1, 2023-10-01, 1d
    section 设计阶段
    设计Node和LinkedList类 :a2, 2023-10-02, 2d
    section 开发阶段
    实现链表的添加功能     :a3, 2023-10-04, 2d
    实现节点删除功能       :a4, 2023-10-06, 2d
    section 测试阶段
    编写单元测试           :a5, 2023-10-08, 2d

结论

在 Java 中,操作单链表的基本功能可以通过简单的类和方法实现。通过上面的示例,我们展示了如何定义链表、添加节点和删除特定节点的过程。在实际开发中,掌握这些基础知识对我们处理更复杂的数据结构问题至关重要。希望本文对您的学习有所帮助!