栈说明:
栈是一种先进后出的数据结构,只能在一端进行输入或者输出。向栈中输出称为入栈,从栈中输出称为出栈。由于栈总是在顶端进行输入输出操作,因此出栈总是输出最后压入栈的数据。
栈使用方法:
Java中的Stack类表示后进先出(LIFO)的对象栈。可以采用java.util包中的stack<E>泛型类创建一个栈对象。常见操作如下:
1、public Stack()
创建一个空Stack
2、public E push(E item)
将item项入栈
3、public E pop()
移除栈顶对象,并作为此函数的值返回该对象
4、public E peek()
获取栈顶端的数据,但是不移除该数据
5、public boolean empty()
测试栈中是否还有数据,有数据返回false,否则返回true
6、public int search(Object o)
获取数据在栈中的位置,最顶端的位置是1,向下依次增加,如果栈中不含有此数据,则返回-1
举例:
斐波那契序列 1 1 2 3 5 8 ...
package org.chisj.stack;
import java.util.Stack;
public class statckTest {
public static void main(String[] args) {
// 栈:先进后出,后进先出(LIFO)
Stack<Integer> iStack = new Stack<Integer>(); //实例化一个存储Integer类型对象的栈对象
iStack.push(0); //入栈
iStack.push(1);
for (int i = 0; i < 5; i++) {
int f2 = iStack.pop(); //出栈
int f1 = iStack.pop();
int tmp = f1 + f2;
iStack.push(f1);
iStack.push(f2);
iStack.push(tmp);
}
while (!iStack.empty()) { //判断栈是否为空
System.out.println(iStack); //打印栈里面的数据
iStack.pop();
}
//取栈顶端的数据,但是不移除该数据
//public E peek()
//获取数据在栈中的位置,最顶端的位置是1,向下一次增加,如果没有找到返回-1
//public int search(Object o)
}
}
测试结果: