这是一个应该列出并反转它的函数。我不知道为什么会收到这个错误。
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());
}
}
答案 0 :(得分:2)
st1
是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中实现了行为。
考虑使用Reverse Linq方法。如果您只想撤销List<int>
,请使用myList.Reverse().ToList()
。它将以相反的顺序返回相同的List<int>
。