Data structures 堆栈和队列的使用?

Data structures 堆栈和队列的使用?,data-structures,computer-science,Data Structures,Computer Science,我正在阅读数据结构,看到了堆栈和队列,但在计算机系统、web开发或具体问题中,我没有得到足够的例子,我应该使用堆栈、队列或树等等。队列是常见的,任何情况下都需要按照先到先得的原则来处理。网络数据包、I/O请求等 当您需要再次使用最后一项时,您需要一个堆栈。我找不到一个现成的好例子,但它被用于将普通数学表达式转换为RPN,或者在图形中进行深度优先搜索时存储节点。大多数(所有?)编程语言都使用堆栈来跟踪调用子程序时程序的状态 说明:程序代码存储在主存储器中。CPU有一个指令指针,它总是指向将要执行的

我正在阅读数据结构,看到了堆栈和队列,但在计算机系统、web开发或具体问题中,我没有得到足够的例子,我应该使用堆栈、队列或树等等。

队列是常见的,任何情况下都需要按照先到先得的原则来处理。网络数据包、I/O请求等

当您需要再次使用最后一项时,您需要一个堆栈。我找不到一个现成的好例子,但它被用于将普通数学表达式转换为RPN,或者在图形中进行深度优先搜索时存储节点。

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

说明:程序代码存储在主存储器中。CPU有一个指令指针,它总是指向将要执行的下一条指令。当一条指令被执行时,该指针将增加一,以指向下一条指令

当程序进入子程序时,指令指针会跳转到其他地址。当这个例行程序结束时,它必须知道它在哪里结束了。因此,跳转之前的最后一个地址被推送到堆栈上。函数完成后,堆栈上最上面的项将是该地址

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

阅读更多关于


树可以用于许多事情,例如。

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

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


队列内删除和插入在两端执行。因此,它被称为先进先出。在队列中,两个指针被称为前后指针。内存空间浪费。

您的任务是给出堆栈、队列或树的使用示例吗?我只是好奇,没有任务。此外,我不是一个即将上大学的学生。哈哈,我很好奇。至少我有一些答案。你能详细说明一下方法调用堆栈吗?@sushil-一个更简单的后进先出的例子怎么样?想想文字处理器中的撤销功能。您需要存储您所做的每件事,以便以后可以撤消它,当您访问它时,您希望从最后一项(堆栈顶部)开始,并向后工作到第一项。@JohnFx-有时我觉得我应该能够继续单击upvotes。你的答案是其中之一。你可以描述一下“当调用子程序时,跟踪程序的状态”@sushil:添加了一个解释和调用堆栈的链接。