2014-11-14 67 views
0

我不確定如何實現鏈接列表插入方法。我知道我需要創建一個新的節點()遍歷列表,我知道如何做到這一點,但我不知道插入是如何工作的,它不像數組那麼簡單。構建線性列表插入方法

想知道是否有人可以幫助並解釋我將如何構建這樣的方法。

+4

線性表?你能否展示一些代碼(或僞代碼)來演示你在說什麼,以及你想要做什麼? – 2014-11-14 12:58:11

+0

我的意思是*鏈接*列表,對不起。將在一秒鐘內添加psuedocode,試圖理清相關的代碼。 – 2014-11-14 12:59:37

+0

類似於'公共節點InsertAfter(對象值,Node之後)',但這幾乎取決於代碼的其餘部分是什麼樣子以及您希望方法如何完成。如果你想要我們解釋鏈表是如何工作的並且如何實現的話,我會建議把這個問題作爲「太寬泛」來解決。顯示你已經嘗試了什麼,以及你在哪裏被卡住。 – CodeCaster 2014-11-14 12:59:45

回答

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