2015-05-11 18 views
-1

LinkedList<Node>不包含定義‘開始’,沒有擴展方法‘開始’接受一個類型的第一個參數'LinkedList<Node>可以找到(是否缺少一個使用指令或程序集引用?)LinkedList的<Node>'不包含定義‘開始’

我重寫了這從C++到C#,我用什麼函數代替「開始」,因爲它沒有在LinkedList中的函數?

代碼

static int main 
{ 
    LinkedList<LinkedList<Node>> l = new LinkedList<LinkedList<Node>>(); 
    LinkedList<LinkedList<Node>>.Enumerator itr; 
    LinkedList<Node>.Enumerator itr1; 
    Binary_Tree bt = new Binary_Tree(); 
    bt.insert(3); 
    bt.insert(2); 
    bt.insert(4); 
    bt.insert(1); 
    bt.insert(5); 
    l = new LinkedList<LinkedList<Node>>(bt.level()); 

    itr = l.GetEnumerator(); 
    while (itr.MoveNext()) 
    { 

     itr1 = (itr.Current).begin(); 
     while (itr1.MoveNext()) 
     { 
      Console.Write((itr1.Current).data); 
      Console.Write(" "); 
     } 
     Console.Write("\n"); 

    } 

    return 0; 
} 
+2

EHH,'GetEnumerator'就像你在'l'做? – thelink2012

+3

嗯,我敢肯定你在c#中尋找的實際構造變得像'foreach(var current in l){/ * do something * /}'。編譯器可以將所有的枚舉器爵士你甚至可以將它們嵌套在一起 – spender

+1

@JohnSaunders:OP問他應該用什麼而不是開始 - 我不認爲OP誤解或懷疑錯誤信息。 「我知道如何在C++中做到這一點,我發現我不知道如何在C#中做到這一點。」 – DWright

回答

0

有多種,你可以使用或不迭代器接近這個方式,以及評論到目前爲止也是有用的目標。

如果你有興趣的東西,橫貫明確的節點(而不是說,foreach,這當然是一個很好的和簡單的方法),但不需要迭代器,你可以使用鏈表的First財產。這將使用「一個LinkedListNode」(這是由First返回,在其供應NextPrevious節點數據項的節點包裝等

var outerNode = l.First; 
while (outerNode != null) { 
    var innerNode = outerNode.Value.First; 
    while (innerNode != null) { 
     Console.Write(innerNode.Value.data); 
     Console.Write(" "); 
     innerNode = innerNode.Next; 
    } 
    Console.Write("\n"); 
    outerNode = outerNode.Next; 
} 
相關問題