怎么向零基础的同学讲解栈?
程序员文章站
2022-05-12 22:36:42
...
我们不妨来讲个故事。
现在有一条一人宽的巷子,如图所示,每次可以进去一个人,但是只能从最外面的人依次出来。我们用“最里面”和“最外面的人”来表示位置。
上图中最后一个人“小朋友”出来了以后。变成如下所示。
那我又再进来一个“小龙”呢?
当所有人都出来了以后呢?
因为我们每出来一个人,将“最外面的人”的位置往左移一个,所以没人的时候,“最外面的人”的位置就在“最里面”的左边。
然后为了方便,我们总是让“最里面”来表示最里面可以站人的位置,让这个位置不动(上图中“最里面”的位置是没有人的)。
好了,现在我们用伪代码来解释一下,我们把“最外面的人”用“top”代替,“最里面”用bottom来代替,用数轴上的值来表示位置,buttom位置为0。
创建空栈:
top == -1
上图中 buttom 位置的框内是没有数据的。
数据进栈,因为空间是有大小的,我们不妨设置该栈的大小为 maxsize,那么其实栈存满的时候,top是等于maxsize - 1 的,所以我们先判断到底有没有存满:
if(top != maxsize-1){
top++;//我们需要先让这个位置移动,然后再给这个位置的数据赋值
data[top] = 数据1;
}
栈满的时候,比如我们规定大小maxsize 为 5,那么当 top == maxsize -1 也就是4 的时候,栈就满了:
出栈,在上图基础上,让数据5出栈,但是如果栈本来就是空的,我们就没办法再出栈了,所以先判空:
if(top !=-1){
x = data[top];//用一个值来接收当前数据,然后再将top位置左移
top--;
}
注:以上都是栈的基础操作,平时使用时,一般都用指针,本文为了简单易懂,没有用指针讲。
上一篇: Java学习笔记(五)
下一篇: 十字架(百度2017秋招真题)深入解析
推荐阅读