栈的数据结构
是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
为什么函数调用要用栈实现
public class Test(){
public static void main(String[] args){
a();
}
int void a(){
return b();
}
int void b(){
return c();
}
int void c(){
return 0;
}
}
上面是一个简单的demo,执行顺序: main --调用-- > a() --调用-- > b() --调用-- > c()
main --return-- > a() --return-- > b() --return<-- c()
如果把他们画成结构图
- main()
-------- a()
---------------- b()
-------------------------------- c()
-------------------------------- _c()
---------------- _b()
-------- _a()
- _main()
带_的表示方法调用完毕了,完全退出了刚该方法。可以看出,正好满足了先进后出的规律,正好与栈的数据结构相吻合。