数据结构之队列java版
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之队列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版的主要内容,如果未能解决你的问题,请参考以下文章