【发布时间】:2017-05-21 15:15:23
【问题描述】:
我正在尝试在现有链接列表中添加新电影名称,但出现错误。
cannot convert from 'string' to 'System.Collections.Generic.LinkedListNode<string>'
这是我正在处理的代码:
LinkedList<string> movies = new LinkedList<string>();
movies.AddLast("Fire & Dew");
movies.AddLast("Hang Break");
movies.AddLast("Naughty Monkey");
movies.AddLast("Sabotage");
//Add movie name Good & Bad After Hang Break
movies.AddAfter("Hang Break", "Good & Bad");
foreach (string movie in movies)
{
Console.WriteLine(movie);
}
任何解决方案和代码提示?
【问题讨论】:
-
对于双向链表中的每个元素,您需要对下一个和上一个项目进行引用。您需要一个单独的类型来封装元素。该类型是 LinkedListNode
. -
您使用链表而不是其他集合类型的任何特殊原因?
-
规则 #1:永远不要使用 LinkedList。规则#2:正确使用它,AddAfter() 需要一个节点,而不是一个字符串。让它与字符串一起工作会使它比现在更糟,你必须再次迭代集合才能找到节点。请改用 List。
-
Linked List 提供了一种替代集合,在您需要非常频繁地从集合中添加或删除项目的情况下,它可以提供更好的性能。
-
这是一个很常见的误解。找到插入点比在 List 中插入元素的成本更多。 LinkedList 对现代处理器非常不友好,它的缓存局部性很差。只有在不丢失节点引用(实际上是 OP 忘记做的事情)的情况下,您才能领先。
标签: c# list linked-list