我需要创建一个LinkedList
. 我有一个Node
用int
属性和Node
属性调用的类。我需要能够按降序将项目添加到 LinkedList。
如果给定的数字高于列表中的最高值,我有可以将项目添加到列表开头的代码。与最低的数字相同。尝试Node
在列表中间添加 a 时会出现问题。我需要使用递归。我已经用它来找到最高和最低的数字,但我无法为最后一种情况编写代码(在中间添加)。
你能给我一个提示吗?也许告诉我哪个是基本情况?
解决了它:
Node root = null;
public void Add(int data)
{
Node m = new Node();
m.data = data;
if (root == null)
{
root = new Node();
root.data = data;
root.Next = null;
}
else if (root.Next == null)
{
if (m.data > root.data)
{
Node tempRoot = root;
root = m;
m.Next = tempRoot;
tempRoot.Next = null;
}
else
{
root.Next = m;
m.Next = null;
}
}
else if (m.data > root.data)
{
m.Next = root;
root = m;
}
else
{
Node temp = root;
Node x = Insert(temp, m);
for (; temp != x; temp = temp.Next) ;
m.Next = temp.Next;
temp.Next = m;
}
}
public Node Insert(Node n, Node insertMe)
{
if (n.Next == null)
{
return n;
}
else
{
if (insertMe.data >= Insert(n.Next, insertMe).data)
{
return n;
}
else
{
return Insert(n.Next, insertMe);
}
}
}