-1

これは、リストを取り、それを逆にすることになっている関数です。なぜこのエラーが発生するのかわかりません。

    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());
        }
    }
4

1 に答える 1

2

st1これはStack<int>、厳密に型指定された int のスタックであることを意味します。が からへNode<int> の暗黙的な変換でない場合、このリストに追加することはできません。とにかく、スタックを操作する例として次のコードを使用してみてください。Node<int>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 ではすでに動作が実装されています。

リバースLinq メソッドの使用を検討してください。を逆にしたい場合はList<int>、 を使用しますmyList.Reverse().ToList()。同じものを返しますList<int>が、順序が逆になります。

于 2013-04-17T13:35:26.570 に答える