我读的数据结构,看看栈和队列,但我不明白的计算机系统或网络的发展或具体问题的足够的例子,我应该使用堆栈或队列或树等堆栈和队列的使用情况?
回答
大多数(所有?)编程语言都使用堆栈来跟踪调用子例程时程序的状态。
说明:您的程序代码存储在主内存中。 CPU有一个指令指针,它总是指向下一条将被执行的指令。当一条指令被执行时,这个指针加1,指向下一条指令。
当你的程序进入子程序时,指令指针会跳转到其他地址。当这个例程完成时,它必须知道它离开的位置。所以,跳转前的最后一个地址被压入堆栈。功能完成后,堆栈中最顶端的项目就是该地址。
这也是过度递归可能导致堆栈溢出的原因。太多的嵌套调用导致堆栈上的许多返回地址被压入,但没有被删除。
在Wikipedia上阅读更多。
树可以用于很多事情,例如binary search trees。
您可以描述“在调用子例程时跟踪程序的状态” – 2010-11-10 15:33:09
@sushil:为调用堆栈添加解释和链接。 – 2010-11-10 15:40:41
队列是常见的事等。无论需要以先到先得的原则处理。网络数据包,I/O请求等。
当您需要重新使用您放置的最后一个项目时,您需要一个堆栈。我无法从帽子顶部找到一个很好的例子,但它用于例如在将常规数学表达式转换为RPN或在图形中进行深度优先搜索时存储节点。
队列 - 先入先出,用于数据的密集处理。可以用于按排序顺序处理任务。 堆栈与Queue - Last In First Out,最常用的示例 - 方法调用堆栈相反。
堆栈删除和插入在同一端执行。所以它被称为后进先出。在堆栈中,只有一个指针被称为TOP。没有浪费存储空间
在队列中删除和插入在两端执行。所以它被称为先进先出。在队列中,两个指针称为FRONT和REAR.Wastage的内存空间。
- 1. 堆栈和队列用java
- 2. 使用队列堆栈
- 3. 只跟踪子进程的堆和堆栈使用情况
- 4. 队列+堆栈C++
- 5. ARM-gcc堆栈使用情况清空
- 6. 使用两个堆栈的队列
- 7. 使用2堆栈实现队列
- 8. 堆栈溢出使用消息队列
- 9. 使用2个队列实现堆栈
- 10. 使用堆栈两个队列
- 11. 比较队列和堆栈的内容
- 12. 堆栈和队列奇怪的错误
- 13. cuda中的递归/堆栈和队列
- 14. 斯卡拉流和他们的堆栈内存使用情况
- 15. 堆栈和队列,为什么?
- 16. 可观察堆栈和队列
- 17. 使用堆栈和队列的C++计算器
- 18. 堆栈和队列使用java中的双向链表
- 19. 使用堆栈和队列的Seg Fault错误
- 20. 基于阵列和基于列表的堆栈和队列
- 21. 是否可以使用ArrayLists以Java编写队列和堆栈?
- 22. 为什么我们在Java中使用堆栈和队列?
- 23. 使用MMX内在函数和Microsoft C++的堆栈使用情况
- 24. 列表,数组,堆栈队列?
- 25. 如何测量Rust中的函数堆栈使用情况?
- 26. 堆栈vs排队?
- 27. 我想实现一个队列,将反转堆栈和打印堆栈FIFO?
- 28. 如何在计算Ackermann时检查堆栈使用情况
- 29. 在编译时检查堆栈使用情况
- 30. 使用堆栈和队列来分隔偶数和奇数的C++
你的任务是给出使用堆栈,队列还是树木的例子,或许? – 2010-11-10 15:25:00
没有一个任务,我只是好奇。此外,我不是一个大学生。 – 2010-11-10 15:25:44
哈哈-1好奇。反正至少我有一些答案。 – 2010-11-10 15:27:16