栈(stack)又名堆栈,它是限定仅在表头进行插入和删除操作的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。zhan
(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
(2)当表中没有元素时称为空栈。
(3)栈为后进先出(Last In First Out)的线性表,简称为 LIFO 表。
栈的修改是按后进先出的原则进行。每次删除(出栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。
Stack里面的方法:
public boolean empty()测试栈是否为空;
public E pop()移除栈顶部的对象,并作为此函数的值返回该对象。
public E push(E item)插入到栈顶部
public E peek()查看栈顶部的对象,但不从堆栈中移除它。
例子:
import java.util.Enumeration;
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
Stack<Object> stack = new Stack<Object>(); // 创建栈对象
System.out.println("11111, absdder, 29999.3 三个元素插入栈中");
stack.push(11111); // 向栈中插入整数 11111
printStack(stack); // 显示栈中的所有元素
stack.push("absdder");
printStack(stack);
stack.push(29999.3);
printStack(stack);
System.out.println(stack.search(11111)); //3
String s = "absdder";
System.out.println(stack.search(s)); //2
System.out.println(stack.search(29999.3)); //1
System.out.println("11111, absdder, 29999.3 三个元素出栈");
System.out.println("元素" + stack.pop() + "出栈"); //元素29999.3出栈
printStack(stack); //显示栈中的所有元素,栈中的元素:11111 absdder
System.out.println("元素" + stack.pop() + "出栈");//元素absdder出栈
printStack(stack); //显示栈中的所有元素,栈中的元素:11111
System.out.println("元素" + stack.pop() + "出栈");//元素11111出栈
printStack(stack); //显示栈中的所有元素,栈是空的,没有元素
}
public static void printStack(Stack<Object> stack) {
if(stack.isEmpty()){
System.out.println("栈是空的,没有元素");
}else{
System.out.print("栈中的元素:");
Enumeration<Object> enumeration = stack.elements();
while(enumeration.hasMoreElements()){
Object elem = enumeration.nextElement();
System.out.print(elem + " ");
}
System.out.println();
}
}
}