给定循环链表在Java中编写一个删除节点的方法。
答案 0 :(得分:-1)
实际上有四种情况需要考虑。
案例1:
列表是空的吗?如果是,则返回null或返回
案例2:
列表中只有一个元素。 将指针设置为null,将列表设置为null。
案例3:
删除列表前面的内容。 在这种情况下,我们有几个步骤。
<强>步骤:强>
案例4:
以此格式删除内容1-&gt; 2-&gt; 3-&gt;我们在哪里删除中间项目。 注意即可。这也适用于删除最后一项,因为它会循环回到1。
<强>步骤强>
将删除节点的指针设置为null。
public void delete(int data) {
// Null list case
if(list == null) return;
// Delete the only element case
if(list.data == data && list.next.data == list.data) {
list.next = null;
list = null;
return;
}
// Delete the front of the list case
if(list.data == data) {
// Move to the end of the list
Node end = list;
while(end.next.data != list.data) {
end = end.next;
}
Node temp = list;
list = list.next;
temp.next = null;
end.next = list;
return;
}
// Delete something in the middle
Node temp = list;
while(temp.next.data != data && temp.next.data != list.data) {
temp = temp.next;
}
// We circled the list and did not find the element to delete
if(temp.next.data == list.data) return;
Node del = temp.next;
temp.next = temp.next.next;
del.next = null;
}