📅  最后修改于: 2023-12-03 15:36:18.182000             🧑  作者: Mango
循环链表是一种链表,其中最后一个元素连接到第一个元素,形成一个循环。从循环链表中删除元素与删除单向链表中的元素类似,但需要考虑多种情况以保持链表的完整性。
/**
* 从循环链表中删除指定节点
* @param head 循环链表头节点
* @param node 待删除节点
* @return 返回新的循环链表头节点
*/
public Node removeFromCircularLinkedList(Node head, Node node){
if(head == null){ // 空链表,无法删除
return null;
}
if(head.next == head){ // 只有一个节点的链表
head = null;
return head;
}
Node p = head;
while(p.next != head){ // 找到链表中的最后一个节点
p = p.next;
}
if(node == head){ // 删除头节点
head = head.next;
p.next = head;
}else{ // 删除非头节点
Node q = head;
while(q.next != node){ // 找到待删除节点的前一个节点
q = q.next;
}
q.next = node.next;
}
return head;
}
以上给出了一个Java实现的删除循环链表节点的函数,可以根据需要进行修改。