zoukankan      html  css  js  c++  java
  • 数据结构之堆栈java版

    import java.lang.reflect.Array;

    /*

    具体原理在c++版已经说的很清楚,这里不再赘述,

    就提一点:java的泛型具有边界效应,一旦离开作用域立马被替换为object类型,在new泛型数组需要借助反射。

    */

    interface BaseStack<T>{
      boolean push(T x);
      boolean pop();
      void clear();
      T top();
    }
    public class JBStack<T> implements BaseStack<T>{
      T[] mStack;
      int mMaxSize,mIndex;
      static public void main(String atgs[]){
        JBStack<Integer> test=new JBStack<Integer>(Integer.class,10);
        test.push(1);
      System.out.println(""+test.top());
      }
      public JBStack(Class<T> type,int Size) {
        // TODO Auto-generated constructor stub
        mMaxSize=Size;
        mIndex=-1;
        mStack=(T[])Array.newInstance(type,mMaxSize);//注意这里new泛型数组的方式 java的泛型有边界替换的特性
      }
      @Override
      public boolean push(T x) {
        // TODO Auto-generated method stub
        if(isFull()){
          //over flow
          return false;
        }
        mIndex++;
        mStack[mIndex] = x ;
      return true;
      }
      @Override
      public boolean pop() {
        // TODO Auto-generated method stub
        if(isEmpyty()){
        //empty
        return false;
        }
        mIndex--;
        return true;
      }

      @Override
      public void clear() {
        // TODO Auto-generated method stub
        mIndex=-1;
      }

      @Override
      public T top() {
        // TODO Auto-generated method stub
        return (T)mStack[mIndex];
      }
      boolean isEmpyty(){
        if(mIndex==-1){
          return true;
        }
        else{
          return false;
        }
      }
      boolean isFull(){
        if(mIndex<mMaxSize){
          return false;
        }
        else{
          return true;
        }
      }
    }

  • 相关阅读:
    SpringBoot条件注解@Conditional
    IDEA远程Debug
    聊一聊Java如何接入招行一网通支付功能
    IDEA中使用lombok插件
    使用Java类加载SpringBoot、SpringCloud配置文件
    Java项目启动时执行指定方法的几种方式
    Java定时任务解决方案
    04 Python并发编程(守护进程,进程锁,进程队列)
    03 初识并发编程
    02 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
  • 原文地址:https://www.cnblogs.com/enjoyall/p/6012239.html
Copyright © 2011-2022 走看看