2016-10-25 59 views
0

我想到了使用两个堆栈制作队列的最佳堆栈实现。另外,我一直在考虑使用两个队列来实现一个堆栈。我想为双堆栈队列和双队列堆栈定义堆栈。我一直在想要在每个ADT上使用哪个ADT?对使用两个堆栈实现的队列使用基于数组的堆栈或链接列表堆栈会更好吗?另外,使用基于数组的队列或基于链表的队列来处理由两个队列组成的堆栈会更好吗?在内存和时间方面,你认为这两种情况的最佳折衷是什么?你会用什么来实现两个堆栈队列?基于数组的栈或链表栈?怎么样两个队列堆栈?

+0

如果您在_one_数组的两端放置“堆叠底部”,相互堆叠堆叠怎么办? – greybeard

+0

[Here](http://mendel.informatics.indiana.edu/~yye/lab/teaching/spring2014-C343/lists.php)是基于数组和链接列表的空间/时间复杂度的简洁比较。从那里分析你的4个案例似乎微不足道。 –

+1

“你会用什么来实现两个堆栈队列?”我从来没有遇到任何两栈(双队列)堆栈(队列)的实现。这些都是很好的家庭作业问题,但你为什么要以这种方式实施它们? –

回答

1

我会说使用阵列是最好的。

数组使用更少的空间开销(没有“下一个”指针等)
此外,性能应该会更好,因为数组是顺序的,并且会更好地利用缓存。

除了家庭作业外,Stack/Queue的实现都使用数组进行了很好的验证。