面试官问我什么是「栈」,我随手画了10张图来解释(3)

2023-04-29 来源:飞速影视
数组栈
其实际就是用一段连续的存储空间来存储栈中的数据元素,有以下特点:
元素所占的存储空间必须连续,这里的连续是指的逻辑连续,而不是物理连续。元素在存储空间的位置是按逻辑顺序存放的。我们来举例说明,鉴于C语言数组下标都是0开始,并且栈的使用需要的空间大小难以估计,所以初始化空栈的时候,不应该设定栈的最大容量。
我们先为栈设定一个基本容量,在应用过STACK_程当中,当栈的空间不够用时,再逐渐扩大。
设定2个常量,STACK_INIT_SIZE(存储空间初始化分配量)和STACK_INCREMENT(存储空间分配增量),宏定义如下:
#define STACK_INIT_SIZE 1000 //数值可以根据实际情况确定#define STACK_INCREMENT 10 //数值可以根据实际情况确定
栈的定义如下:
typedefstruct{void *base; void *top;int stackSize;} SqSTACK;
base 表示栈底指针top 表示栈顶指针stackSize 表示栈当前可以使用的最大容量若base的值是NULL,表示栈结构不存在;top初始值指向栈底,即top = base;
每当插入新的元素时,指针top就增1,反之删除就减1,非空栈中的栈顶指针始终在栈顶元素的下一个指针上面。
数据元素和栈顶指针的关系如下图所示:

面试官问我什么是「栈」,我随手画了10张图来解释


面试官问我什么是「栈」,我随手画了10张图来解释


相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号