我想将一个元素添加到链表中,以便列表保持排序。我写了这个函数。他有一个应该包括的地方,但我不知道如何插入元素。
public void AddSorted(int num)
{
Node n = new Node(num);
Node curr = _first;
Node curr1 = _first.Link;
while (curr1.Data < n.Data && curr1 != null)
{
curr = curr.link;
curr1= curr1.link;
}
// how to add element ???
}
您完全没有提供有关 LinkedList 类的上下文,所以我只能做出有根据的猜测。
鉴于我从上面的代码中了解到的情况,在遍历到要插入新Node
的位置后,您需要将Node curr1
的链接(这是最后一个节点)设置为新的节点对象。
Node temp = curr1.Link; // store next Node in temporary object
curr1.Link = n; // Insert new Node
请记住,您需要将新节点的链接设置为链接列表中的下一个节点,以便继续链接列表(如果新插入的节点不是最后一个):
n.Link = temp;
如果我在理解您的代码时犯了错误,请告诉我,然后我可以相应地更改我的答案。
在我亲爱的朋友们的帮助下。我可以写这个函数。下面你可以看到代码:
public void AddSorted(int num)
{
Node n = new Node(num);
Node curr = _first;
if (_first == null || _first.Data >= n.Data)
{
n.Link = _first;
_first = n;
}
else
{
while (curr.Link != null && curr.Link.Data < n.Data)
{
curr = curr.Link;
}
n.Link = curr.Link;
curr.Link = n;
}