堆,栈,队列的区别;
从内存分配上来说
栈是操作系统在建立某个进程或者线程时建立的一个存储区域,是线程私有的,栈中存的是局部变量之类,
函数参数。由操作系统自动分配。
堆是程序运行时,向操作系统申请某大小的内存空间,所有new 出来的对象和数组都是存储在堆中的。
从数据结构来说
堆是完全二叉树;
栈是线性表。栈是先进后出的而堆没有这一特性。栈的插入与删除都是在表尾进行,队列的插入在队尾,删除在队头;
如何用两个栈实现一个队列?
栈是先进后出的,队列是先进后出,例如abcd入栈后pop出来即是dcba,入队列则是abcd。
所以让abcd先入一个栈被pop出再入另一个栈变成dcba的顺序再pop出即可,负负得正。
本文深入探讨了堆、栈和队列的区别,包括它们在内存分配上的不同,以及作为数据结构的特点。解释了堆作为完全二叉树,栈作为线性表及先进后出的特性,同时介绍了如何通过两个栈实现队列的功能。
1902

被折叠的 条评论
为什么被折叠?



