码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构之队列java版

时间:2016-10-30 16:52:59      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:main   new   test   gen   maxsize   end   bst   else   abstract   

//java由于泛型的擦除,用起来十分不方便

abstract class BaseQueue<T>{
    abstract boolean enQueue(T x);
    abstract T front(T x);//注意这里也要和c++ 区别一下 这里直接返回首部元素
    abstract boolean delQueue();
    abstract void clear();
}
class Queue<T> extends BaseQueue<T>{
    int mMaxSize,mIndexF,mIndexR;
    T []mQueue;
    @SuppressWarnings("unchecked")
    Queue(Class<T> type,int maxSize){
        mMaxSize=maxSize;
        mIndexF=mIndexR=0;
        mQueue=(T[])Array.newInstance(type, maxSize);
    }
    @Override
    boolean enQueue(T x) {
        // TODO Auto-generated method stub
        if(isFull()){
            //over flow
            return false;
        }else{
            mIndexF=(mIndexF+1)%mMaxSize;
            mQueue[mIndexF]=x;
            return true;
        }
    }
    @Override
    T front(T x) {
        // TODO Auto-generated method stub
        if(isEmpty()){
            //emprty
            return null;
        }
        else{
            x=mQueue[mIndexF];
            System.out.println(x);
            return x;
        }
    }

    @Override
    boolean delQueue() {
        // TODO Auto-generated method stub
        if(isEmpty()){
            //empty
            return false;
        }
        else{
            mIndexR=(mIndexR+1)%mMaxSize;
            return true;
        }
    }
    @Override
    void clear() {
        // TODO Auto-generated method stub
        mIndexF=mIndexR=0;
    }
    boolean isFull(){
        if((mIndexR+1)%mMaxSize==mIndexR){
            return true;
        }else{
            return false;
        }
    }
    boolean isEmpty(){
        return mIndexF==mIndexR;
    }
}
public class JBQueue {
    public static void main(String args[]){
        Integer j = 6;
        Queue<Integer> test=new Queue<>(Integer.class, 10);
        test.enQueue(3);
        test.front(j);//由于擦除的原因 直接导致j的值没有变
        System.out.println(test.front(j));
    }
    static int ff(int j){
        j--;
        return j;
    }
}

 

数据结构之队列java版

标签:main   new   test   gen   maxsize   end   bst   else   abstract   

原文地址:http://www.cnblogs.com/enjoyall/p/6013105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!