【发布时间】:2021-05-19 12:57:28
【问题描述】:
我想创建一个方法来删除循环链表中参数中给定值的最后一次出现。
我试图这样做,这是我的方法:
public void deleteLastOccurence(int value) {
Element cur = this.head;
Element prev = null;
Element tmp = null;
if(this.head == null)
return;
if(this.rear.data == value) {
this.head = this.rear = null;
return;
}
// while(cur != this.rear) {
while(cur.next != this.head && cur.next.data != value) {
prev = cur;
tmp = cur.next;
// cur = cur.next;
}
// cur = cur.next;
// }
prev.next = tmp.next;
}
但我不认为我正在删除最后一个匹配项,因为如果我要删除的值就在同一个值旁边怎么办。
【问题讨论】:
-
循环列表怎么会有 last 出现?您如何确定先到后到的内容?
-
@FedericoklezCulloca -
this.head -
那么这个方法不能在循环链表中实现?
-
@Parasite 这不是我的意思。我的意思是你需要定义在循环结构中先出现和最后出现的含义。想象一个圆上的任意两点。一个先来后一个是什么意思?
-
@FedericoklezCulloca 后面是头部之前的元素。