2016-02-08 5 views
0

Как вставить в общий список ссылок через индекс без использования хвоста.Удалить из одного связанного списка по индексу

public void RemoveByIndex(int index) 
{ 
    int count = 0; 
    LinkedListNode<T> current = Head; 
    while (count <= index) 
    { 
     if (count == index) 
     { 
      current.Next = null; 
     } 
     else 
     { 
      current = current.Next; 
     } 
     count++; 
    } 
    Head = current; 
} 

Я ИНТ список массив с данными 5, 10, 15. И я не знаю, почему это всегда вынимайте меня 5,15, когда я дал ему 1'st индекс.

+1

Почему название говорит «добавить», когда вы фактически удаляете из списка? –

+0

Отредактировано, извините, слишком много кодирования на сегодня. – Vitaliy

ответ

0

первой итерации (кол = 0) =>else блок выполняется =>current = current.next => ток = 10, current.next = 15

второй итерации (кол = 1) =>if блок выполняется =>current.next = null => 15 удаляется => ток = 10

в конце второго счетчика итераций = 2 и выход из времени цикла =>Head = current => Глава = 10 => 5 удаляет

possib le:

public void RemoveByIndex(int index) 
{ 
    int count = 0; 
    LinkedListNode<T> current = Head; 
    LinkedListNode<T> previous = current; 
    while (count <= index) 
    { 
     if (count == index) 
     { 
      previous.next = current.next    
      current = null;    
     } 
     else 
     { 
      previous = current; 
      current = current.Next; 
     }   
     count++; 
    }  
} 
0
var list1 = new LinkedList<int>(); 

var nodesToRemove = list1.Where(x => x == index).ToList(); 

foreach(var node in nodesToRemove) 
     lis1.Remove(node); 
+0

Спасибо, но я делаю отдельный связанный список из scatch, с общим типом и с использованием Head. – Vitaliy

Смежные вопросы