Я пытаюсь отсортировать узлы в моем связанном списке. Мой код просто добавляет в конец, если значение меньше конца связанного списка. Я не уверен, как это исправить, или я не полностью проверяю правильный сценарий.
Я пытался увеличивать ток до тех пор, пока он не станет больше, чем nodeToAdd, чтобы поместить узел между ними, но он всегда просто помещает его в конец.
public void AddOrdered(int value)
{
LinkedListNode nodeToAdd = new LinkedListNode(value);
LinkedListNode cur = m_first;
if (m_first == null)
m_first = nodeToAdd;//new LinkedListNode(value);
else if (nodeToAdd.m_data < m_first.m_data)
{
AddAtFront(value);
}
else if (nodeToAdd.m_data < cur.m_next.m_data)
{
LinkedListNode temp = new LinkedListNode(value);
temp = m_first.m_next;
m_first.m_next = nodeToAdd;
nodeToAdd.m_next = temp;
}
else
{
AddAtEnd(value);
}
}
дополнение add в конце / front методы - которые работают нормально
public void AddAtEnd(int value)
{
LinkedListNode cur = m_first;
if (m_first == null)
{
LinkedListNode lnl = new LinkedListNode(value);
m_first = lnl;
}
while (cur.m_next != null)
{
cur = cur.m_next;
}
cur.m_next = new LinkedListNode(value);
}
public void AddAtFront(int value)
{
if (m_first == null)
{
LinkedListNode ln = new LinkedListNode(value);
m_first = ln;
}
else
{
LinkedListNode lnl = new LinkedListNode(value);
lnl.m_next = m_first;
m_first = lnl;
}
}
Значения должны добавляться по порядку, но выходные данные помещают их в самый конец связанного списка, если в качестве значений не введены новые минимальные / максимальные значения.