有时,当我运行此代码时,空引用异常发生在Current.Next.Data = Hold.Data;
上。插入排序双向链接列表问题
private void InsertionSort()
{
for (Node FirstUnsorted = _Head.Next; FirstUnsorted != null; FirstUnsorted = FirstUnsorted.Next)
{
Node Hold = FirstUnsorted;
Node Current;
for (Current = FirstUnsorted.Prev; Current != null && Current.Data.CompareTo(Hold.Data) > 0; Current = Current.Prev)
Current.Next.Data = Current.Data;
Current.Next.Data = Hold.Data;
}
}
我知道,你不能引用下一个节点,如果当前节点是等于无效,但我无法确定一个解决方案。
如何防止发生此问题?
如果'Current'等于null,则不能检查Current.Next'是否为null,因为Current.Next不存在。 – TheAuzzieJesus 2014-10-04 15:02:48
只是跳过移动将从列表中删除数据并导致重复的引用。 – Guffa 2014-10-04 15:03:26
@TheAuzzieJesus,是的,这是真的。太好了,你明白了!我们只在检查Current后检查'Current.Next',因为我们不想有空的解引用错误。 – Ilya 2014-10-04 15:05:26