有時,當我運行此代碼時,空引用異常發生在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