2014-11-14 2 views
0

Я не уверен, как реализовать метод Insert Linked List Insert. Я знаю, что мне нужно создать новый узел() итерации по списку, и я знаю, как это сделать, но я не уверен, как работает вставка, это не так просто, как массив.Построение метода вставки линейного списка

Чувствовал, может ли кто-нибудь помочь и объяснить, как я построил бы такой метод.

+4

Линейный список? Не могли бы вы показать код (или псевдокод), чтобы продемонстрировать, о чем вы говорите, и что вы пытаетесь сделать? –

+0

Я имел в виду * Связанный * список, извините. добавит psuedocode в секунду, пытаясь разобраться в соответствующем коде. –

+0

Что-то вроде 'public Node InsertAfter (object value, Node after)', но все это в значительной степени зависит от того, как выглядит остальная часть вашего кода и что именно вы хотите. Если вы хотите, чтобы мы объяснили, как работает связанный список, и как его реализовать, я бы предложил закрыть этот вопрос как «слишком широко». Покажите, что вы пробовали, и где именно вы застряли. – CodeCaster

ответ

1

Я попытался сделать образец. Может быть, вы найдете его под рукой

using System; 
namespace LinkedList 
{ 
    class LinkedList 
    { 

     public static void Main(String[] args){ 
      var list = new LinkedList(); 

      list.Insert (1); 
      list.Insert (2); 
      list.Insert (3); 
      list.Insert (4); 

      var node = list.Head; 
      do { 
       Console.Out.WriteLine (node.Value); 

      } while((node = node.Next) != null); 
     } 

     private Node _dummy; 
     private Node _head; 
     private Node _tail; 

     public Node Head { get { return _head; }} 

     public LinkedList(){ 
      _dummy = new Node(null, null); 
      _head = _dummy; 
      _tail = _dummy; 
     } 

     public void Insert(int value){ 
      _head = new Node(_head, value); 
     } 

     public class Node{ 

      public int? Value { get; set; } 
      public Node Next { get; set;} 

      public Node(Node next, int? value){ 
       Value = value; 
       Next = next; 
      } 
     } 
    } 
} 
0
Node head; 
    object key; 
    Node nodeTobeInserted; 

    void Insert(object key) 
    { 
     if(head == null) 
     head = new Node(); 
     else if(head.value.Equals(key)) 
     { 
     Node next = head.Next; 
     head=nodeToBeInserted; 
     head.Next = next; 
     } 
     else 
     { 
     do 
     { 
      Node next = head.next; 

     } 
     while(next.Next != null && next.Next.value != key); 
     if(next.Next !=null) 
     { 
      nodeTobeInserted.Next = node.Next; 
      node.Next = nodeToBeInserted; 
     } 

     } 

    } 

    // Sample Code, but yeah this might give you an idea how to do it 
Смежные вопросы