【发布时间】:2020-07-10 19:44:47
【问题描述】:
我得到了这组代码,我需要在 while 循环上方和 While 循环中用一些代码填充它。我看过一些文档,但我所看到的只是带有两个参数的搜索方法,而这个只有一个。我已经在while循环中写了这部分,但我注意到这是否正确。如何完成此代码以搜索作为参数给出的值?
注意:这不是我要求你为我做的家庭作业,而是我们拥有的为数不多的学习资源之一,如果你能完成它,它会让我更好地掌握。
当我现在运行此代码时,我收到以下错误消息: “Tests.Node”类型不包含“value”的定义,并且找不到“Tests.Node”类型的扩展方法“value”。您是否缺少程序集参考?
{
public class Node<T> where T : IComparable
{
public T Value { get; }
public Node<T> Next { get; set; }
public Node(T value, Node<T> next)
{
this.Value = value;
this.Next = next;
}
}
public class LinkedList<T> where T : IComparable
{
public Node<T> start;
public LinkedList()
{
start = null;
}
public LinkedList(Node<T> node)
{
start = node;
}
public Node<T> Search(T value)
{
[here is code needed]
while (start != null)
if(start.value.CompareTo(value) == 0){
return start;
}
start = start.next;
}
}
public class Program {
public static void Main(string[] args){
var list =
new LinkedList<int>(
new Node<int>(
5, new Node<int>(
7, new Node<int>(
21, new Node<int>(
30, null)
)
)
)
);
var a = 21;
var fr = list.Search(a);
}
}
}
【问题讨论】:
-
假设您不想改变您的列表以从搜索找到匹配项的位置开始,您确实应该将
start分配给局部变量并改用它。另外你需要处理没有匹配的情况,也许最后是return null;? -
将 start 分配给本地变量是什么意思?
-
我的意思是
var curr = start;然后while(curr != null)和curr = curr.Next;等等。否则下次搜索start时将被设置为具有匹配值的节点,您将不会搜索整个列表。