我对编码很陌生,我无法理解代码中的错误,我非常感谢您的帮助。
所以代码工作正常,除了最后一个元素,因为之后的元素为null,我无法处理它(我很新)。
问题在于最后一部分。
public static void InsertingIntoSortedLinkedList(int value, int key)
{
Node m = new Node();
m.value=value;
m.key=key;
if (root==null)
{
m.Next = null;
root = m;
}
else
{
if (key<root.key)
{
m.Next = root;
root = m;
}
else
{
Node temp1 = root;
Node temp2 = null;
while ((temp1!=null)&&(temp1.key<key))
{
temp2 = temp1;
temp1 = temp1.Next;
}
if (temp1==null)
{
m.Next = null;
temp2.Next=m;
}
else
{
m.Next = temp1;
if (temp2!=null)//I either put this here and the last element is lost or I got a NullReferenceException. What should I change?
{
temp2.Next = m;
}
}
}
}
}
感谢您的帮助。
答案 0 :(得分:0)
您可能发现问题的一种情况是当您插入等于根值的值时 - 将跳过这些值,因为您试图在匹配项之前插入而不更新根引用。
解决方案是在匹配值之后插入 - 这可以通过更改行
来完成while ((temp1!=null)&&(temp1.key<key))
到
while ((temp1 != null) && (temp1.key <= key))
通过更改行
插入根元素if (key<root.key)
到
if (key <= root.key)
在
之前插入时更新根值if (temp2!=null)
{
temp2.Next = m;
}
else
root = m;
任何一项更改都应解决问题
答案 1 :(得分:-3)
你有两个拼写错误:
if (key<root.key)
while ((temp1!=null)&&(temp1.key<key))
在>
<key