来源:互联网 发布:下载蠕虫病毒源码.rar 编辑:程序博客网 时间:2024/05/20 19:19

栈(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();
       }
   }
}


0 0