📌  相关文章
📜  用于删除链表中节点的Java程序(1)

📅  最后修改于: 2023-12-03 14:56:19.676000             🧑  作者: Mango

删除链表中节点的Java程序

简介

在链表中删除一个节点通常需要找到要删除节点的前一个节点,然后将前一个节点的next指针指向要删除节点的下一个节点即可。这种删除节点的操作比较常见,特别是在链表相关的数据结构中,因此程序员们需要掌握这一技能。

本篇介绍了如何使用Java编写一个用于删除链表中节点的程序。

程序示例

以下是一个用于删除链表中节点的Java程序示例:

public class LinkedList {
    private Node head;

    private static class Node {
        int data;
        Node next;

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

    public void deleteNode(int key) {
        Node temp = head;
        Node prev = null;

        if (temp != null && temp.data == key) {
            head = temp.next;
            return;
        }

        while (temp != null && temp.data != key) {
            prev = temp;
            temp = temp.next;
        }

        if (temp == null) {
            return;
        }

        prev.next = temp.next;
    }

    public void insert(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
        } else {
            Node temp = head;
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = newNode;
        }
    }

    public void printList() {
        Node temp = head;
        while (temp != null) {
            System.out.print(temp.data + " ");
            temp = temp.next;
        }
    }

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

        System.out.println("Initial Linked List:");
        linkedList.printList();

        linkedList.deleteNode(2); // 删除节点2

        System.out.println("\nLinked List after deleting node 2:");
        linkedList.printList();
    }
}
程序说明
  1. Node类是链表的节点类,其中包含一个整型的data字段和一个指向下一个节点的next指针。
  2. LinkedList类包含链表的头节点head,以及一些用于插入、删除节点和打印链表的方法。
  3. deleteNode(int key)方法用于删除指定值为key的节点。
    • 如果要删除的节点是头节点,直接将头节点指向下一个节点即可。
    • 否则,遍历链表找到要删除的节点的前一个节点,然后将其next指针指向要删除节点的下一个节点。
  4. insert(int data)方法用于向链表中插入一个新节点,如果链表为空,则直接将新节点设置为头节点,否则遍历链表找到最后一个节点,并将其next指针指向新节点。
  5. printList()方法用于打印链表中的所有节点。
  6. main()方法中创建一个链表对象,插入一些节点并打印链表,然后删除一个指定节点并再次打印链表。

以上就是一个简单的用于删除链表中节点的Java程序的示例。你可以根据需要在此基础上进行拓展和优化。