我正在尝试以排序的方式将节点添加到我的链表中。如果值小于链表的末尾,我的代码就会一直添加到末尾。我不确定如何修复这个问题,或者我是否没有完全检查正确的场景。
我尝试递增current,直到它大于放置节点的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 at end/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;
}
}
这些值应该按顺序添加,但除非输入新的min/maxs作为值,否则输出会将它们放在链表的最末尾。
https://stackoverflow.com/questions/56136619
复制相似问题