【发布时间】:2019-11-01 21:40:07
【问题描述】:
查看我的数据结构,了解一些新的工作面试要求。所以我有一个链接列表的删除方法。
public Link delete(int key) {
Link current = first;
Link previous = first;
while(current.iData != key) {
if(current.next == null)
return null;
else {
previous = current;
current = current.next;
}
}
if(current == first)
first = first.next;
else
// just bypass it
previous.next = current.next;
return current;
}
到目前为止,我想我已经理解了。但我对这条线很好奇。
// just bypass it
previous.next = current.next;
为什么我们不用previous 覆盖head(在本例中表示为first)?或者会是错误的逻辑吗?喜欢
// just bypass it
previous.next = current.next;
first=previous;
我的意思是previous 和current 只是迭代列表的指针。而删除后的真实数据位于first对吗?抱歉,如果这样想会很奇怪。有时我在学习算法时会出现奇怪的直觉,主要是因为我有点弱
【问题讨论】:
标签: java algorithm pointers data-structures linked-list