gpt4 book ai didi

c# - 从 LinkedList<> 中删除项目

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:20 25 4
gpt4 key购买 nike

我有一个存储商品价格的链表。我计算了所有项目的总和,我想检查总价格是否超过设定的限制,如果超过我想删除项目直到它没有。

所以我的链表是这样的

Name of item: Automobilis     |Amount of said item available: 1     | Amount needed: 1     | Total price of item/s: 3000
Name of item: Kirvis |Amount of said item available: 50 | Amount needed: 2 | Total price of item/s: 200
Name of item: Piesiniai |Amount of said item available: 1 | Amount needed: 1 | Total price of item/s: 1800

Total price of all items is: 5000

如果我有 4000 的设置限制,我想删除项目,直到它小于该限制。

我正在使用这个方法来删除节点

static void DeleteNode(double x, LinkedList<MatchingItems> myLinkedList)
{
var node = myLinkedList.First;
while (node != null)
{
var nextNode = node.Next;
while (node.Value.FinalPrice > x)
{
myLinkedList.Remove(node);
}
node = nextNode;
}
}

但是当我尝试运行它时它会抛出这个错误:

Unhandled Exception: System.InvalidOperationException: The LinkedList node does not belong to current LinkedList.
at System.Collections.Generic.LinkedList`1.ValidateNode(LinkedListNode`1 node)
at System.Collections.Generic.LinkedList`1.Remove(LinkedListNode`1 node)

最佳答案

原因是您正在使用 while 检查节点是否应该从 LinkedList 中删除

while (node.Value.FinalPrice > x)
{
myLinkedList.Remove(node);
}

第一个node.Value.FinalPrice > x,从LinkedList中移除,循环不断,反复尝试移除节点,但不属于LinkedList了。改成

if (node.Value.FinalPrice > x)
{
myLinkedList.Remove(node);
}

关于c# - 从 LinkedList<> 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com