查ICP网:全新的综合网站备案信息查询网
Copyright © 2008-2028 www.chaicp.com [ 查icp] All Rights Reserved.| 合肥寻云网络科技有限公司 | 营业执照
icp备案号:【皖B2-20160079-16】 增值电信业务经营许可证 【皖B2-20160079】 网站地图 robots文件 皖公网安备: 34010402702277号 不良举报 关于我们 免责申明 广告合作
链栈和顺序栈的区别是什么?很多小伙伴不知道怎么区别链栈和顺序栈,下面小编就整理下链栈和顺序栈的区别。
链栈和顺序栈
和顺序栈相比,链栈有一个比较明显的优势是:通常不会出现栈满的情况。
因为顺序栈用数组实现,必须事先确定栈的大小,对内存的使用效率并不高,无法避免因数组空间用光而引起的溢出问题;而链栈因为动态申请内存,一般不会出现栈满情况,空栈还是会出现的。
而因为链栈和顺序栈都是栈,栈先进后出,只能在栈顶进行插入和删除操作,所以链栈在插入和删除操作上对于顺序栈并无优势。
栈
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。
栈可以用来在函数调用的时候存储断点,做递归时要用到栈!
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下几方面的信息:
1.函数的返回地址和参数
2. 临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。