📅  最后修改于: 2023-12-03 14:51:26.917000             🧑  作者: Mango
循环链表是一种特殊的链表,尾节点指向头节点,形成一个环。如何在循环链表中间插入新节点呢?下面是一个简单的Java程序示例。
我们可以遍历循环链表,找到需要插入的位置,然后执行插入操作。具体步骤如下:
下面是一个示例程序,演示在循环链表中插入新节点的过程。
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程序的全部内容。