データ構造:基本的な循環キュー、および操作



/ **
*円形キュー
・キュー要素のキューポインタに直接配置された第1ヘッド、キューの最後の要素の末尾へのポインタ、すなわち、キュー内の予約領域が常に
* / クラス CircleQueueが実装キュー<整数> { プライベート整数[] queueArray = NULL ; プライベート int型まず、 プライベート int型の尾; プライベート int型maxSizeの、 公共 CircleQueue(int型MAX){ この .maxSize + =最大1。; この .queueArray = 新しい新しい整数【maxSizeの]; } @Override 公共 int型のサイズ(){ リターン(テール第一+ maxSizeの)%maxSizeの。 } @Override パブリック ブールのisEmpty(){ 戻り尾== まず、 } @Override パブリック ブール含有(オブジェクトo){ 整数整数 = O(整数)。 以下のためintは I ++; I =尾!私は最初= {) の場合(I == queueArray.length){ 私は = 0 ; } 場合(integer.equalsは(queueArray [I])){ 戻り } } を返す } @Override 公共イテレータ<整数> 反復子(){ 戻り 新しいイテレータ<整数> (){ int型 temFirst = 最初; @Override パブリック ブールのhasNext(){ リターン!テール= temFirst。 } @Override 公共整数次(){ int型 NUM = queueArray [temFirst]。 temFirst =(temFirst + 1)%maxSizeの; 戻り値のNUM; } }。 } @Override パブリック ブール追加(整数整数){ もし、((尾+ 1)%maxSizeの== 最初の){ するSystem.out.println( "队列已满、无法添加" )。 リターン はfalse ; } queueArray [尾] = 整数。 =(尾+ 1)%maxSizeの。 返す ; } @Override パブリック整数ポール(){ 場合(のisEmpty()){ スロー 新しいのRuntimeExceptionを( "队列为空" ); } int型の結果= queueArray [第]。 =(第一+ 1)%maxSizeの。 返す最初; } @Override パブリック整数PEEK(){ 戻りqueueArrayを[第]。 } }


    パブリック 静的 ボイドメイン(文字列[]引数){ 
        CircleQueue circleQueue = 新しい新しい CircleQueue(5。 )、

        スキャナスキャナ = 新しい新しいスキャナ(System.in); 

        一方、真の){ 
            するSystem.out.println( "1:添加元素" )。
            System.out.println( "2:要素を削除" 
            のSystem.out.println( "3:ビューヘッダー要素。" ); 
            のSystem.out.println( "4:トラバースキュー" 
            するSystem.out.println( " 5:表示要素の数" 
            のSystem.out.println( " 6:それは空です。」);
            INT称賛= scanner.nextInt()。
            スイッチ(称賛){
                 ケース 1 :{ 
                    するSystem.out.println( "请输出一个元素" )。
                    INT NUM = scanner.nextInt()。
                    circleQueue.add(NUM)。
                    休憩; 
                } 
                ケース 2 :{ 
                    するSystem.out.println(circleQueue.poll())。
                    休憩; 
                } 
                ケース 3 :{ 
                    するSystem.out.println(circleQueue.peek())。休憩;

                } 
                ケース 4 :{
                     ための(整数整数:circleQueue){ 
                        System.out.printf( "%D \ T" 整数)。
                    } 
                    のSystem.out.println(); 
                    休憩; 
                } 
                ケース 5 :{ 
                    するSystem.out.println(circleQueue.size())。休憩; 

                } 
                ケース 6 :{ 
                    するSystem.out.println(circleQueue.isEmpty())。
                    休憩; 
                } 
            } 
        } 

    }
 
 

 

 
 

おすすめ

転載: www.cnblogs.com/xxfxxf/p/12175416.html