栈的数据结构

是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

为什么函数调用要用栈实现

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()

带_的表示方法调用完毕了,完全退出了刚该方法。可以看出,正好满足了先进后出的规律,正好与栈的数据结构相吻合。

results matching ""

    No results matching ""