堆栈和队列的用法?

时间:2010-11-10 15:21:09

标签: data-structures computer-science

我正在阅读数据结构并查看堆栈和队列,但我没有在计算机系统或Web开发中获得足够的示例或我应该使用堆栈或队列或树等的特定问题。

4 个答案:

答案 0 :(得分:3)

在先到先服务原则需要处理的情况下,队列很常见。网络数据包,I / O请求等

当您需要重新使用再次放置的最后一个项目时,您需要一个堆栈。我无法找到一个很好的例子,但是它被用作例如将正常数学表达式转换为RPN或在图形中进行深度优先搜索时存储节点。

答案 1 :(得分:3)

大多数(所有?)编程语言都使用堆栈来跟踪调用子例程时程序的状态。

解释:程序代码存储在主内存中。 CPU有一个指令指针,它总是指向将要执行的下一条指令。当指令执行时,该指针增加1,指向下一条指令。

当程序进入子程序时,指令指针跳转到某个其他地址。当该例程完成时,它必须知道它离开的位置。因此,跳转前的最后一个地址被压入堆栈。函数完成后,堆栈中最上面的项将是该地址。

这也是过度递归可能导致堆栈溢出的原因。嵌套调用太多导致许多返回地址被压入堆栈,但没有被删除。

详细了解Wikipedia

树可以用于很多事情,例如binary search trees

答案 2 :(得分:2)

队列 - 先进先出,用于数据的逐步处理。可用于按入队顺序处理任务。 堆栈与队列 - 后进先出,最常用的示例 - 方法调用堆栈相反。

答案 3 :(得分:1)

在堆栈中删除和插入是在同一端执行的。因此它被称为后进先出。在堆栈中,只使用一个名为TOP的指针。没有内存空间的浪费

队列删除和插入在两端执行。因此,它被称为先入先出。在队列中,两个指针称为FRONT和REAR.Wastage of memory space。