📌  相关文章
📜  在循环链表中间插入新节点的Java程序(1)

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

在循环链表中间插入新节点的Java程序

循环链表是一种特殊的链表,尾节点指向头节点,形成一个环。如何在循环链表中间插入新节点呢?下面是一个简单的Java程序示例。

实现思路

我们可以遍历循环链表,找到需要插入的位置,然后执行插入操作。具体步骤如下:

  1. 定义一个新节点,保存要插入的数据。
  2. 遍历循环链表,找到插入位置的前一个节点。
  3. 将新节点的next指针指向插入位置的节点。
  4. 将插入位置前一个节点的next指针指向新节点。
代码实现

下面是一个示例程序,演示在循环链表中插入新节点的过程。

public class InsertNodeInCircularLinkedList {
    static class Node {
        int data;
        Node next;

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

    // 插入新节点
    public static Node insertNode(Node head, int data, int position) {
        Node newNode = new Node(data);
        if (head == null) {
            // 如果链表为空,插入的是头节点
            head = newNode;
            head.next = head;
            return head;
        } else if (position == 1) {
            // 插入位置是头节点后面
            newNode.next = head.next;
            head.next = newNode;
            int temp = head.data;
            head.data = newNode.data;
            newNode.data = temp;
            return head;
        } else {
            // 插入位置在链表中
            Node currentNode = head;
            for (int i = 1; i < position - 1; i++) {
                currentNode = currentNode.next;
            }
            newNode.next = currentNode.next;
            currentNode.next = newNode;
            return head;
        }
    }

    // 打印链表
    public static void printLinkedList(Node head) {
        if (head == null) {
            return;
        }
        System.out.print(head.data + " ");
        Node currentNode = head.next;
        while (currentNode != head) {
            System.out.print(currentNode.data + " ");
            currentNode = currentNode.next;
        }
    }

    // 测试程序
    public static void main(String[] args) {
        Node head = null;
        head = insertNode(head, 1, 1);
        head = insertNode(head, 2, 2);
        head = insertNode(head, 3, 3);
        head = insertNode(head, 4, 2);
        printLinkedList(head); // 输出:1 4 2 3
    }
}

上面的程序定义了一个Node类来表示节点,节点包含数据和指向下一个节点的指针。insertNode方法用来插入新节点,其中包含三种情况:链表为空,插入的是头节点;插入位置是头节点后面;插入位置在链表中。printLinkedList方法用来遍历链表,并输出链表中所有节点的数据。最后,在main方法中演示了如何使用insertNode方法来插入新节点,并使用printLinkedList方法来打印链表中所有节点的数据。

以上就是一个循环链表中插入新节点的Java程序的全部内容。