2013-04-17 86 views
-1

這是一個函數,應該採取一個列表並將其逆轉。我不知道爲什麼我得到這個錯誤。爲什麼我會得到:「錯誤t 2參數1:無法從'int'轉換爲'TRAINING1.Node <int>''錯誤?

public static void What(List<int> lst) 
    { 
     Stack<int> st1 = new Stack<int>(); 
     while (!lst.IsEmpty()) 
     { 
      **st1.Push(lst.Remove(lst.GetFirst().GetInfo());** 
     } 
     Node<int> pos = lst.GetFirst(); 
     while (!st1.IsEmpty()) 
     { 
      pos = lst.Insert(pos, st1.Pop()); 
     } 
    } 
+3

.GetInfo()返回什麼? – RQDQ

+1

什麼是方法:GetFirst()和.GetInfo()? - 我假設他們不返回一個整數? –

+0

您將pos作爲第一個參數傳遞給lst.Insert方法。這個論點應該是一個int,而不是一個節點這是什麼pos。 –

回答

2

st1Stack<int>,這意味着它是整數的一個強類型堆棧。如果不存在從Node<int>int的隱式轉換,則不能將Node<int>添加到此列表中。無論如何,嘗試使用下面的代碼與堆棧工作的一個例子:

public static void Reverse(List<int> lst) 
{ 
    Stack<int> st1 = new Stack<int>(); 
    while (lst.Count != 0) 
    { 
     var item = lst[0]; 
     lst.RemoveAt(0); 
     st1.Push(item); 
    } 
    while (st1.Count != 0) 
    { 
     lst.Add(st1.Pop()); 
    } 
} 

這不是一個有效的解決方案,並擁有龐大的缺點量。我只是想說明使用堆棧的正確反轉方法儘可能接近你的情況。

您可以使方法Reverse通用,但已經在Linq中實現了行爲。

考慮使用Reverse Linq方法。如果您只想要反轉List<int>,請使用myList.Reverse().ToList()。它將返回相同的List<int>,但以相反的順序。

+0

+ 1用於反向Linq方法 – RQDQ

+0

不需要第一個循環。 '堆棧 st1 =新堆棧(lst); lst.Clear();'就夠了 – I4V

+0

@ I4V是的,謝謝,我知道。我想做出接近OP問題的正確行爲。也沒有必要指定'int'。只需使用'新的堆棧(lst); lst.Clear();'並且製作'Reverse (List lst)' –

相關問題