zoukankan      html  css  js  c++  java
  • 数据结构之队列java版

    //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;
        }
    }
  • 相关阅读:
    jar
    8月21日23:38
    WPF之UI虚拟化
    (转)Windows系统白名单以及UAC机制
    C#获取文件版本信息
    命名实体识别,使用pyltp提取文本中的地址
    (转载)完成端口(Completion Port, I/OCP)详解
    全国各城市地名抓取,包含街道、村落、小区、商店、景点等
    关于Python打包运行的一些思路
    关于批判性思维(Critical Thinking)
  • 原文地址:https://www.cnblogs.com/enjoyall/p/6013105.html
Copyright © 2011-2022 走看看