• java Stack(栈)


    "Stack" 通常时指"后进后出"(LIFO)的容器,有时栈也被称为叠加栈,因为最后"压入"栈的元素,第一个"弹出"栈,经常用来类比栈的事物时装有弹簧的储存器中的自助托盘,最后装入托盘的总是最先拿出.

    LinkedList具有能够直接实现栈的所有功能的方法,因此可以直接将LinkedList当栈使用,不过,有时一个正真的"Stack"更能把事情讲清楚

    下面时java编程思想的栈,T是泛型,类名之后加<T>告诉编译器这将是一个参数化类型而其中的类细参数,即在类被使用时将被实际类类型替换的参数,"我么在定义一个可以持有T类型对象的Stack." Stack是用LinkedList实现的,而LinkedList也被告知它将持有T类型对象.注意push接受的是T类型的对象,而peek()和pop返回T类型的对象,

    //: net/mindview/util/Stack.java
    // Making a stack from a LinkedList.
    package object;
    import java.util.LinkedList;
    
    public class Stack<T> {//T是泛型,类名之后加<T>告诉编译器这将是一个参数化类型
                           //而其中的类细参数,即在类被使用时将被实际类类型替换的参数
      private LinkedList<T> storage = new LinkedList<T>();
      public void push(T v) { storage.addFirst(v); }  //入栈
      public T peek() { return storage.getFirst(); }  //取栈顶值
      public T pop() { return storage.removeFirst(); } //出栈
      public boolean empty() { return storage.isEmpty(); } //判空
      public String toString() { return storage.toString(); }
    } ///:~

    使用实例

    //: holding/StackTest.java
    package object;
    //import net.mindview.util.*;
    public class StackTest {
      public static void main(String[] args) {
        Stack<String> stack = new Stack<String>();
        for(String s : "My dog has fleas".split(" "))/split分隔字符串返回数组
          stack.push(s);
        while(!stack.empty())
          System.out.print(stack.pop() + " ");
      }
    } /* Output:
    fleas has dog My
    *///:~

    编程思想的Stack和java的Stack使用实例

    //: holding/StackCollision.java
    package object;
    import net.mindview.util.*;
    
    public class StackCollision {
      public static void main(String[] args) {
       Stack<String> stack =
          new Stack<String>();
        for(String s : "My dog has fleas".split(" "))
          stack.push(s);
        while(!stack.empty())
          System.out.print(stack.pop() + " ");
        System.out.println();
        java.util.Stack<String> stack2 =
          new java.util.Stack<String>();
        for(String s : "My dog has fleas".split(" "))
          stack2.push(s);
        while(!stack2.empty())
          System.out.print(stack2.pop() + " ");
      }
    } /* Output:
    fleas has dog My
    fleas has dog My
    *///:~
  • 相关阅读:
    记录ci框架中定时任务的执行
    2019 年MySQL面试题及答案
    Net线程问题解答(转)
    vs2005 Team System的版本
    ASP.NET 安全认证(如何运用 Form 表单认证)
    .net调用存储过程时的输出函数
    在服务器执行js脚本
    简单的批量更新(小技巧)
    UNION 和UNION ALL 的区别
    ServerVariable(环境变量)
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10261283.html
Copyright © 2020-2023  润新知