我一直在阅读和阅读堆栈,但我仍然不知道如何在现实编程中使用它!我知道这是一个LIFO数据结构,但我怎样才能从中受益?我知道POP和PUSH的功能,但那又是什么?
答案 0 :(得分:7)
每次调用函数时,您都在使用堆栈!当你做一件事并且需要去做其他事情时,你必须“放下”你正在做的事情并开始研究其他事情。每次你完成某件事,你需要恢复你最后“放下”的东西。你所“放下”的所有东西都形成一堆。
调用函数需要将正在执行的操作“推送”到堆栈中。从函数返回需要“弹出”你上次推送的东西,然后回去做。
答案 1 :(得分:2)
以下是堆栈有用的地方:只要需要解析使用括号进行分组的字符串,就需要堆栈。如果需要首先遍历树的深度 - 例如,要将XML文件的内部表示转换为XML文件,或者计算用户给出的表达式的值 - 您需要一个堆栈。当然,在大多数这样的情况下,你可以避免使用递归显式地使用它(在幕后,编译器使用堆栈来实现它),但是你冒着隐藏的堆栈溢出的风险,你无法防范。
答案 2 :(得分:0)
堆栈的一个常见用途是用于将中缀表达式(如2 + 3)转换为前缀表达式(+ 2 3)的分流码算法,计算机更容易评估前缀表示法表达式。