我尝试删除符合链接列表条件的多个节点。该程序有点复杂,所以我要说明它的要点。我的链表中的节点具有以下特征(与数字相关联的名称):
Name Number
Dog 1
Cat 1
Rat 2
Donkey 3
Fish 1
我希望能够删除编号为1的节点。我的删除功能:
public void Delete(Int N) {
Node current = Head;
Node previous = Head;
while (current.getNum() != N) {
if (current.getNextNode() == null) {
System.out.print("Not found");
} else {
previous = current;
current = current.getNextNode();
}
}
if (current == Head) {
Head = Head.getNextNode();
} else {
Node A = current.getNextNode();
previous.setNextNode(A);
}
}
这有效,但它只删除第一次出现。我知道这可能是由于缺乏或适当的循环结构,但我已经在这方面工作了几个小时,我一路上感到困惑。我已尝试手动执行跟踪表,但这也无效。
如何编辑函数以便循环遍历整个链接列表并删除符合条件的节点?
答案 0 :(得分:2)
这应该从链接列表中删除匹配的Node
实例:
public void delete(int n) {
int count = 0;
Node prev = null, next;
for (Node current = head; current != null; current = next) {
next = current.getNextNode();
if (current.getNum() == n) {
count++;
if (prev != null) {
prev.setNextNode(next);
} else {
head = next;
}
} else {
prev = current;
}
}
System.out.print(count > 0 ? ("Number deleted: " + count) : "Not found");
}
答案 1 :(得分:0)
如果要删除链接列表中的节点,可以使用以下任何一种方式
我使用了第一种方法,使用元素创建一个新的链表,其中数字不等于N.
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
return 'Hello World!'
def doesArticleExist(topic):
foundTopics = wikipedia.search(topic)
if (len(foundTopics) > 0):
return foundTopics
return ["No topics were found! Your topic is new!"]