Vb.net 在遍历链表时插入新节点
我试图在VB.NET中创建元组的有序链表。目前我的排序部分有问题。目前,当我插入一个新节点并使用AddBefore或AddAfter时,我只是在迭代,但我不断得到语法错误Vb.net 在遍历链表时插入新节点,vb.net,Vb.net,我试图在VB.NET中创建元组的有序链表。目前我的排序部分有问题。目前,当我插入一个新节点并使用AddBefore或AddAfter时,我只是在迭代,但我不断得到语法错误 For node In LinkedList If node.Item1 < results.Item1 Then LinkedList.AddBefore(node, newnode) ElseIf node.Item1 = results.Item1 Then Link
For node In LinkedList
If node.Item1 < results.Item1 Then
LinkedList.AddBefore(node, newnode)
ElseIf node.Item1 = results.Item1 Then
LinkedList.AddAfter(node, newnode)
ElseIf LinkedList.Last.Equals(node) Then
LInkedList.AddLast(results)
End If
Next
AddBefore
、AddAfter
和AddLast
成员希望节点作为第一个参数。在链接列表上为每个使用时,返回的值不是节点
要在LinkedList
的节点上迭代,可以使用First
属性获取每个节点上的第一个节点,然后使用Next
。要获取每个节点的值,必须使用值
属性:
Dim node = linkedList.First
While node IsNot Nothing
If node.Value.Item1 < results.Item1 Then
linkedList.AddBefore(node, newnode)
ElseIf node.Value.Item1 = results.Item1 Then
linkedList.AddAfter(node, newnode)
ElseIf linkedList.Last.Equals(node) Then
linkedList.AddLast(results)
End If
node = node.Next
End While
Dim node=linkedList.First
而节点不是什么
如果node.Value.Item1
另一个选项是使用键自动排序。需要更多的代码…发布AddBefore
和AddLast
的定义,以及节点的类型是什么?
?使用SortedList或SortedDictionary可能更容易,这两种类型都可以在System.Collections.GenericCorry中找到,以防响应延迟,但是,创建一个元组数组,然后从数组中元组的第一个元素中对它们进行排序,这是一个更好的主意吗?如果您向集合写入一次,并多次读取,那么写入元组数组然后进行排序可能会更快。如果您不断地向收藏中写信和阅读,那么列表可能是一个更好的选择。我建议您进行评测,看看什么最适合您的场景。
newnode = New LinkedListNode(Of Tuple(Of Double, String))(results)
Dim node = linkedList.First
While node IsNot Nothing
If node.Value.Item1 < results.Item1 Then
linkedList.AddBefore(node, newnode)
ElseIf node.Value.Item1 = results.Item1 Then
linkedList.AddAfter(node, newnode)
ElseIf linkedList.Last.Equals(node) Then
linkedList.AddLast(results)
End If
node = node.Next
End While