-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是 a Stack<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 回答