堆:

①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:

        ·堆中某个节点的值总是不大于或不小于其父节点的值;

        ·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。

②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。

③堆是应用程序在运行的时候请求操作系统分配给自己内存,一般是申请/给予的过程。

④堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。

栈:

栈(stack)又名堆栈,一个数据集合,可以理解为只能在一端进行插入或删除操作的列表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底

②栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来(先进后出)

③栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。

栈的基本操作:
  进栈(压栈):push
  出栈:pop
  取栈顶:gettop

08-28 12:48