我们可以使用yield在C#中使用单栈实现队列吗
Can we use yield to implement queue using single stack in C#
我在面试中被要求使用单栈实现队列,我能够做到,但我想知道是否也可以通过使用 yield 来实现?
根据上面的评论,我会说不,不可能为此使用单个堆栈 and yield。
正如 OP 所述,他使用递归来反转堆栈(得到它的底部)。因此,这与要求使用两个堆栈实现队列的问题中给出的解决方案基本相同:How to implement a queue using two stacks? 因为运行时堆栈用作第二个堆栈。
虽然总是可以重写递归方法以使用迭代代替(请参阅任何有关理论计算机科学的书籍),但这正是解决此任务所禁止的,因为它需要另一个数据结构相同的大小来保存数据。我们需要使用迭代才能使用 yield。
我在面试中被要求使用单栈实现队列,我能够做到,但我想知道是否也可以通过使用 yield 来实现?
根据上面的评论,我会说不,不可能为此使用单个堆栈 and yield。
正如 OP 所述,他使用递归来反转堆栈(得到它的底部)。因此,这与要求使用两个堆栈实现队列的问题中给出的解决方案基本相同:How to implement a queue using two stacks? 因为运行时堆栈用作第二个堆栈。
虽然总是可以重写递归方法以使用迭代代替(请参阅任何有关理论计算机科学的书籍),但这正是解决此任务所禁止的,因为它需要另一个数据结构相同的大小来保存数据。我们需要使用迭代才能使用 yield。