C# LinkedList添加方法

C# LinkedList添加方法,c#,C#,因此,我正在为一个链表创建一个add方法,我从头开始创建。我希望列表在列表中的任何位置添加项(具有int值的节点)。这是我的密码: public void Add(int val) { Node newNode = new Node(); newNode.value = val; if (head == null) { head = newNode; current = newNode; } if (current.Next =

因此,我正在为一个链表创建一个add方法,我从头开始创建。我希望列表在列表中的任何位置添加项(具有int值的节点)。这是我的密码:

public void Add(int val)
{
   Node newNode = new Node();
   newNode.value = val;

   if (head == null)
   {
       head = newNode;
       current = newNode;
   }

   if (current.Next == null)
   {
       current.Next = newNode;
       current = newNode;

   }
   size++;
}
现在,当我尝试我的程序时,我注意到我只能在列表中添加线性值。我完全站错方向了吗

例如: 我的列表中有3个元素,1、7、9,我想将项目2添加到元素1之后的列表中?

怎么样

public void Add(int val)
{
   Node newNode = new Node();
   newNode.value = val;

   if (head == null)
   {
       head = newNode;
       current = newNode;
   }
   else
   {
       current.Next = newNode;
       current = newNode;
   }
   size++;
}

public void Insert(int index, int val)
{
   // COMPLETELY UNTESTED BUT MAY POINT YOU IN THE RIGHT DIRECTION
   Node newNode = new Node();
   newNode.value = val;


   if (head == null) { return; }

   Node node = new Node();
   if (index == 0){
      newNode.Next = head;
      head = newNode;
   } 
   node = head;

   while(node.Head!=null && index > 1)
   {
      node = node.Next;
      index--;
   }
   if (node != null && index >= 0){
      var next = node.Next;
      newNode.Next = next;
      node.Next = newNode;
   }
   size++;
}

您要做的是从列表的开头开始,然后遍历它,直到到达适当的位置,然后插入它。大概是这样的:

public void Add(int val)
{
    var newNode = new Node();
    Node currentNode = head;
    int index=0;

    while (currentNode != null && index < val)
    {
        currentNode=currentNode.Next;
        index++;
    }

    newNode.Next = currentNode.Next;
    currentNode.Next = newNode;
    // If its a doubly linked list, you might need to update .Prev too
}
public void Add(int val)
{
var newNode=新节点();
节点当前节点=头;
int指数=0;
while(currentNode!=null&&index

这样做的目的是遍历每个节点,并在这样做时增加一个索引计数器。当我们最终到达正确的位置时,我们将获取当前节点指向的节点,并将新节点指向它。然后我们将当前节点的下一个属性指向我们的新节点,从而在当前节点之后“插入”我们的新节点。

是否假定
current
指向最后一个元素?考虑将其重命名为“代码>最后或<代码>尾部<代码>。它跟踪列表中的当前节点(最后一个节点),因为插入新节点时它总是向前移动。在什么情况下,
current.Next
不会为空?您的问题和代码缺乏很多细节。您的问题不清楚您在问什么。@user1892117-只要您有时间,请写下您的反馈。我希望这个解决方案对你有用。不要忘记接受答案,这样将来的访问者也可以自信地使用解决方案。检查以了解如何做。如果有任何疑问/问题,请随时发表评论。哦,好的。但是如果我的列表中有3个元素,1、7、9,我想在元素1之后添加第2项到我的列表中呢?谢谢也就是说,
Insert
,通常的参数是想要的索引和项,因此
Insert(int-index,int-val)
,那么您应该使用
远离
。下一步
索引
次并插入。要在
节点
之后插入
新节点
,请使用以下逻辑:
var-prevenxt=node.Next;newNode.Next=prevNext;node.Next=newNode
;在我的头上添加了一些插入代码,可能会为您指出正确的方向-我不能保证它会起作用。非常感谢您的回答!