C#在现有LinkedList中添加新项目的最佳方法<;T>;?

C#在现有LinkedList中添加新项目的最佳方法<;T>;?,c#,list,linked-list,C#,List,Linked List,我试图在现有的链接列表中添加新的电影名称,但出现错误 cannot convert from 'string' to 'System.Collections.Generic.LinkedListNode<string>' 无法从“字符串”转换为“System.Collections.Generic.LinkedListNode” 下面是我正在处理的代码: LinkedList<string> movies = new LinkedList<string>

我试图在现有的链接列表中添加新的电影名称,但出现错误

cannot convert from 'string' to 'System.Collections.Generic.LinkedListNode<string>'
无法从“字符串”转换为“System.Collections.Generic.LinkedListNode”
下面是我正在处理的代码:

 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);
       }    
LinkedList电影=新建LinkedList();
电影。AddLast(“火与露”);
电影。AddLast(“挂断”);
电影。AddLast(“顽皮猴子”);
电影。AddLast(“破坏”);
//在挂断后添加电影名称“好”和“坏”
电影。AddAfter(“挂断”,“好与坏”);
foreach(电影中的字符串电影)
{
Console.WriteLine(电影);
}    
有什么解决方案和代码提示吗

那么,签名的类型是:

csharp
交互式shell中评估此代码后,我们得到:

csharp> movies
{ "Fire & Dew", "Hang Break", "Good & Bad", "Naughty Monkey", "Sabotage" }

之所以需要这样做,是因为这样的链表允许在O(1)中的给定节点旁边插入,因为它修改了下一个和上一个节点的引用。这是可以做到的,因为它只需要更改给定节点和给定节点旁边的节点。但是,如果您首先需要搜索节点,则算法为O(n),因此链表的性能优势将丢失。

对于双链表中的每个元素,您需要参考下一个和上一个项目。您需要一个seprate类型来封装元素。该类型是LinkedListNode。使用链接列表而不是其他集合类型的任何特定原因?规则1:永远不要使用LinkedList。规则2:正确使用它,AddAfter()需要一个节点,而不是字符串。让它与字符串一起工作会使它变得比现在更糟,您必须再次迭代集合以找到节点。请改用列表。链表提供了一种替代集合,在您需要频繁地从集合中添加或删除项的情况下,它可以提供更好的性能。这是一种常见的误解。查找回插入点比在列表中插入元素更昂贵。LinkedList对现代处理器非常不友好,它的缓存位置非常差。只有在不丢失节点引用的情况下,您才能领先,实际上是OP忘记做的事情。
movies.AddLast("Fire & Dew");
var hang_break = 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");
csharp> movies
{ "Fire & Dew", "Hang Break", "Good & Bad", "Naughty Monkey", "Sabotage" }