zoukankan      html  css  js  c++  java
  • 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
    *///:~
  • 相关阅读:
    Oracle——Hint
    Oracle——package....包的概念和定义
    Oracle——sql语句执行步骤以及提高sql基本查询效率
    Oracle函数之捡漏篇
    Oracle 分析函数Over(partition by...)以及开窗函数
    初尝RabbitMQ消息队列
    Gerrit部署成功后project下不显示clone地址
    jenkins打包iOS 报错:error: exportArchive: The data couldn’t be read because it isn’t in the correct format.
    gerrit 版本下载
    grep -w ,grep -e,grep -v的使用
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10261283.html
Copyright © 2011-2022 走看看