纯静态单页网站,攀枝花住房和城乡建设厅网站,万源seo,宁波seo排名方案优化公司一.什么是栈
栈是一种特殊的线性表#xff0c;它只允许在固定的一端进行元素的添加与使用#xff0c;且遵循先进后出的原则。添加取用元素的一端称为栈顶#xff0c;另一端称为栈底。出栈和入栈都是操作栈顶元素
二.栈的模拟实现
栈的底层是一个数组 这是里面的成员变量以…一.什么是栈
栈是一种特殊的线性表它只允许在固定的一端进行元素的添加与使用且遵循先进后出的原则。添加取用元素的一端称为栈顶另一端称为栈底。出栈和入栈都是操作栈顶元素
二.栈的模拟实现
栈的底层是一个数组 这是里面的成员变量以及构造方法
压栈入栈 首先要检测栈是否满如果满就要进行2倍扩容。注意此扩容会产生新的对象而不是在原数组上扩容。
出栈 遵循后进先出所以要返回数组最后一个元素而且要更新size的值。
这样对吗显然没有考虑栈为空的情况修改如下 获取栈顶元素 三.Stack的使用 这里发现Stack竟然没有数组来存放元素这是因为它用的是它的父类Vector的数组
入栈 调用了父类的addElement方法 要确定容量容量不够就要扩容 这里提到了capacityIncrement这个量我们看一下这个量的解释 这是一个容量增量在扩容时数组容量的增加量就是我们所指定的capacityIncrement的大小而当没有指定这个量时数组就会进行二倍扩容。
再继续看grow方法
newcapacity的大小就是我上面说的用它与mincapacity比较选择其中的最大值进行扩容。注意扩容是产生新的数组。
出栈 调用了另一个方法 首先检查下标合法性然后将它之后的元素整体向前一定一位。注意将末尾位置置为空
获取栈顶元素 还是调用了另一个方法 然后再用一个方法返回对应下标的元素 用到了向下转型
返回某一元素的下标 用到了一个方法 先判断下表是否合法再看o是否为null否则走else语句
为什么要判断是否为null因为只有不为null时才能调用equals方法否则就会空指针异常