前者是先进先出,
后者是后进先出,本质区别
队列和堆栈的区别联系~
什么是堆栈
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。
要点:
堆:顺序随意
栈:先进后出
堆和栈的区别
队列:先进先出,后进后出.
堆栈:先进后出,后进先出.
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 。
5、程序代码区—存放函数体的二进制代码。
二、例子程序
这是一个前辈写的,非常详细
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
}
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); 123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;
栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。
区别如下:
一、规则不同
1. 队列:先进先出(First In First Out)FIFO
2. 栈:先进后出(First In Last Out )FILO
二、对插入和删除操作的限定不同
1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;
2. 栈:只能在表的一端插入和删除。
三、遍历数据速度不同
1. 队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快;
2. 栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。
#15824389101#
1,栈和队列的区别是啥 - ******
#终志# 队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表.区别如下:一、规则不同 1. 队列:先进先出(First In First Out)FIFO 2. 栈:先...
#15824389101#
简述堆和栈的区别和联系 - ******
#终志# 堆和栈的要点:堆,队列优先,先进先出(FIFO—first in first out).栈,先进后出(FILO—First-In/Last-Out).一般情况下,如果有人把堆栈合起来说,那它的意思是栈,可不是堆.堆和栈的对比分析:1、堆栈空间分配栈(操作系统)...
#15824389101#
栈和队列有什么相似,有什么不同呀,谢谢 - ******
#终志# 栈是后进先出,可以理解为栈只有一个口供出入,先进入的在栈的底部,随后进来的一次往上,出栈的时候在最上面的先出栈.而队列是先进先出,和现实中的队列一样,最前面的人是最先到的,办完事后最先走.最后面的人是最后到的,最后走.
#15824389101#
栈和队列区别 ******
#终志# 同样是线性结构的,栈是一种只允许在表的一端进行插入和删除操作的线性表.就好像食堂里的一摞盘子,只能一个一个往上放,也只能从那一头一个一个往下取.而队列是一边进一边出的,就好像我们在食堂里排队一样,队头出列,队尾入列.
#15824389101#
c语言堆栈,队列区别 - ******
#终志# 在内存中有个系统分配的堆和栈,前者用来存放 程序中的全局变量、静态变量,后者用来存放程序中的局部变量.DS中的栈和队列是一种自定义的存储数据的类型,他们都是根据实际应用的需要而创建的,简单的说,堆栈是由系统管理、分配、回收的,而DS中的栈、队列则有用户定义、使用.呵呵,请指正....
#15824389101#
“堆和栈的区别“ 以及 ”栈的队列的区别“ 中的栈一样吗 - ******
#终志# 应该是栈和队列的区别吧,在计算机中是只有一个栈的名词的,所以是一样的.
#15824389101#
简述队列和堆栈这两种数据类型的相同点和差异处. - ******
#终志# 都可以看做是一维数组来操作,队列先进先出,出列只能在列头,进列只能在列尾,堆栈是后进先出,进栈和出栈都是从栈顶
#15824389101#
线性表、堆栈和队列有什么相同之处和不同之处 - ******
#终志# 堆栈和队列都是线性表的一种,堆栈可以用八个字来概括,先进后出,只能一端操作,举个例子,往桶里放东西和取东西.队列是先进先出,一头进从另一头出,就是排队.这些都是标准的堆栈和队列,还有一些变种的堆栈各队列
#15824389101#
线性表、堆栈和队列有什么相同之处和不同之处 - ******
#终志# 堆栈和队列都是线性表的一种,堆栈可以用八个字来概括,先进后出,只能一端操作,举个例子,往桶里放东西和取东西.队列是先进先出,一头进从另一头出,就是排队.这些都是标准的堆栈和队列,还有一些变种的堆栈各队列