在當前位置前插入結點的代碼如下:
// 在當前位置前插入數據
/// <summary>
/// 在當前位置前插入數據
/// </summary>
/// <param name="DataValue"></param>
public void Insert(int DataValue)
{
ListNode NewNode = new ListNode(DataValue);
if (IsNull())
{
//為空表,則添加
Append(DataValue);
return;
}
if (IsBof())
{
//為頭部插入
NewNode.Next = Head;
Head.Previous = NewNode;
Head = NewNode;
Current = Head;
ListCountValue += 1;
return;
}
//中間插入
NewNode.Next = Current;
NewNode.Previous = Current.Previous;
Current.Previous.Next = NewNode;
Current.Previous = NewNode;
Current = NewNode;
ListCountValue += 1;
}
進行升序插入的代碼如下:
// 進行升序插入
/// <summary>
/// 進行升序插入
/// </summary>
/// <param name="InsertValue"></param>
public void InsertAscending(int InsertValue)
{
//參數:InsertValue 插入的數據
//為空鏈表
if (IsNull())
{
//添加
Append(InsertValue);
return;
}
//移動到頭
MoveFrist();
if ((InsertValue < GetCurrentValue()))
{
//滿足條件,則插入,退出
Insert(InsertValue);
return;
}
while (true)
{
if (InsertValue < GetCurrentValue())
{
//滿族條件,則插入,退出
Insert(InsertValue);
break;
}
if (ISEOf())
{
//尾部添加
Append(InsertValue);
break;
}
//移動到下一個指針
MoveNext();
}
}