一、栈(Stack:后进先出或先进后出)
栈(Stack)是一种有序特殊的线性表,只能在表的一端(称为栈顶,top,总是指向栈顶元素)执行插入和删除操作,最后插入的元素将第一个被删除,因此栈也称为后进先出或先进后出的线性表。
二、基本操作
1、创建栈
Stack<T> stack=new Stack<>();
2、入栈(add 、push)
1. push:向栈顶插入数据
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
2. add :向 栈顶/特定位置 插入数据
//add 向栈顶插入数据
stack.add(6);
//add 向特定位置插入数据(从栈底由0开始)
stack.add(1,10);
3. add与push区别
返回值不同:add返回布尔类型 ,push则返回插入元素的类型
System.out.println(stack.push(6));// 6
System.out.println(stack.add(7)); //true
3、出栈 (pop)
pop :将栈顶数据输出且删除
stack.pop();
4、输出 (peek)
peek: 将栈顶数据输出,但不删除
System.out.println(stack.peek());//6
5、查找 (search)
search: 查询与栈数据相等的首个位置,从栈顶由1开始
System.out.println(stack.search(10));//7
6、获取(get)
get:获取由栈底从0开始 位置的数据
System.out.print(stack.get(1));//10
7、判断是否为空(empty)
三、栈的输出
- for循环遍历,遍历结束,stack不变——由栈底开始从0输出
for(int i=0;i<stack.size();i++){
System.out.print(stack.get(i)+" ");
}
for (Integer i:stack) {
System.out.print(i+" ");
}
- 调用pop输出,遍历结束 ,stack清空——由栈顶开始输出
while (!stack.empty()){
System.out.print(stack.pop()+" ");
}