乐观学习,乐观生活,才能不断前进啊!!!
我的主页:optimistic_chen
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~
前言
截至目前在集合框架中,我们学完了List接口下的ArrayList和LinkedList,今天要学的是栈(Stack),数据结构中最让人“开心”的部分,期待一下吧~ ~ ~
栈Stack
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。
栈顶 :进行数据插入和删除操作的一端,另一端称为栈底。栈中的数据元素遵守后进先出的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据在栈顶
栈的模拟实现
根据Stack的源码,它只有简单的几个方法,并不像之前ArrayList、LinkedList那么多的方法。因此,我们学起来一定会轻松很多。
首先,实现整个栈,我们要清楚,这个栈要拿数组表示或者链表表示?
其实两者都行,只是对于我们初学者来说,数组更好接受,也更容易接收。把栈中的元素以下标的形式体现出来,是不是更好理解了呢?
压栈操作
public void push(int val){
if(isFull()){
this.array= Arrays.copyOf(array,2*array.length);
}
array[usedSize++]=val;
}
public boolean isFull(){
return usedSize==array.length;
}
出栈操作
public int pop(){
if(isEmpty()){
throw new EmptyStackExpection();
}
int val=array[usedSize-1];
usedSize--;
return val;
}
public boolean isEmpty(){
</