如何实现 Java 循环单向链表

1. 介绍

作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何实现 Java 循环单向链表。循环单向链表是一种常见的数据结构,可以用来存储和操作数据。

2. 流程

下面是实现 Java 循环单向链表的步骤,你可以用表格展示出来:

步骤 操作
1 创建节点类
2 创建链表类
3 实现添加节点方法
4 实现删除节点方法
5 实现打印链表方法

3. 代码实现

步骤1:创建节点类

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

    public Node(int data) {
        this.data = data;
    }
}

步骤2:创建链表类

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

    // 构造方法
    public CircularLinkedList() {
        head = null;
    }
}

步骤3:实现添加节点方法

public void addNode(int data) {
    Node newNode = new Node(data);
    if (head == null) {
        head = newNode;
        newNode.next = head; // 将新节点指向自己
    } else {
        Node current = head;
        while (current.next != head) {
            current = current.next;
        }
        current.next = newNode;
        newNode.next = head;
    }
}

步骤4:实现删除节点方法

public void deleteNode(int data) {
    Node current = head;
    Node prev = null;

    while (current.data != data) {
        if (current.next == head) {
            System.out.println("Node not found");
            return;
        }
        prev = current;
        current = current.next;
    }

    if (current == head) {
        prev = head;
        while (prev.next != head) {
            prev = prev.next;
        }
        head = head.next;
        prev.next = head;
    } else if (current.next == head) {
        prev.next = head;
    } else {
        prev.next = current.next;
    }
}

步骤5:实现打印链表方法

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

4. 序列图

下面是添加节点和删除节点的序列图:

sequenceDiagram
    participant User
    participant CircularLinkedList
    User->>CircularLinkedList: addNode(data)
    CircularLinkedList->>CircularLinkedList: create new Node
    CircularLinkedList->>CircularLinkedList: check if head is null
    CircularLinkedList->>Node: newNode.next = head
    Node->>CircularLinkedList: newNode
    CircularLinkedList->>CircularLinkedList: traverse to find last node
    CircularLinkedList->>CircularLinkedList: add newNode to the end
    CircularLinkedList->>User: Node added successfully

    User->>CircularLinkedList: deleteNode(data)
    CircularLinkedList->>CircularLinkedList: search for node with data
    CircularLinkedList->>CircularLinkedList: delete node
    CircularLinkedList->>User: Node deleted successfully

5. 结论

通过以上步骤和代码示例,你应该已经了解了如何实现 Java 循环单向链表。记得不断练习和探索,加油!