首页 > 代码库 > 数据结构之队列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; } }
数据结构之队列java版
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。