这是一个很简单但是容易搞混的问题,今天一面时就搞混了数据结构中的堆和栈,因此总结一下。
数据结构中:
堆(heap):被看做是一棵树的数组对象。性质:某一节点的值总是不大于(或不小于) 其父节点的值。既小顶堆或大顶堆,堆总是一棵完全树。
栈(stack):又名堆栈,它是一种先进后出的线性表。
内存空间中:
堆(heap):分配对象的地方。动态分配内存大小,生存期不必告诉编译器。
栈(stack):存放基本类型变量和对象句柄。数据大小于生存期必须确定。
这是一个很简单但是容易搞混的问题,今天一面时就搞混了数据结构中的堆和栈,因此总结一下。
数据结构中:
堆(heap):被看做是一棵树的数组对象。性质:某一节点的值总是不大于(或不小于) 其父节点的值。既小顶堆或大顶堆,堆总是一棵完全树。
栈(stack):又名堆栈,它是一种先进后出的线性表。
内存空间中:
堆(heap):分配对象的地方。动态分配内存大小,生存期不必告诉编译器。
栈(stack):存放基本类型变量和对象句柄。数据大小于生存期必须确定。