Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在遍历链表时插入新节点_Vb.net - Fatal编程技术网

Vb.net 在遍历链表时插入新节点

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

我试图在VB.NET中创建元组的有序链表。目前我的排序部分有问题。目前,当我插入一个新节点并使用AddBefore或AddAfter时,我只是在迭代,但我不断得到语法错误

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