LinkedList添加方法

时间:2014-12-11 15:03:09

标签: c#

所以,我正在创建一个链接列表的添加方法,我从头开始制作。我希望列表在列表中的任何位置添加Items(具有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,我想在元素1之后将项目2添加到我的列表中?

2 个答案:

答案 0 :(得分:0)

怎么样?
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++;
}

答案 1 :(得分:0)

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

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
}

这样做是遍历每个节点,在我们这样做时递增索引计数器。当我们最终到达正确的位置时,我们将获取当前节点指向的节点,并让我们的新节点指向它。然后我们将当前节点的Next属性指向我们的新节点,从而&#34;插入&#34;我们在当前节点之后的新节点。