a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 170|回复: 0

[专业语言] JAVA认证:Java数组实现循环队列详解

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java数组实现循环队列,队尾指针为rear,队首指针为front,队尾入队,队首出队,数组空间循环利用。 9 R- X0 ]4 V+ R2 x# D6 e
    view plaincopy to clipboardprint?0 j6 A3 s' R& W7 H! l& `
    /**( m( G( P' |( y: Z$ S% F5 `, N# ]3 o
     * QueueArray.java
* j, g' v1 d! ]( a     */) m/ v  o. a9 D$ H5 O% Y3 K0 I
    package cn.edu.uibe.oop;3 D3 o  `' Y4 x$ [
    /**
# E) V" U6 Y2 A3 R1 C9 `4 ~     * 数组实现的循环队列
2 m' G) `% o2 O7 f2 W     * @author TongQiang: J" J: R3 y$ f2 \
     */9 h! I' t" b" k1 i
    public class QueueArray {0 Y" d% T9 w+ b  W$ E9 F5 ~
        Object[] a; //对象数组,队列最多存储a.length-1个对象
3 W. O( w" i) h# b        int front;  //队首下标1 |5 n( ]% s0 M. r) Y4 V* T
        int rear;   //队尾下标
3 x# n2 h# w+ i( H' j1 T, Y" d        public QueueArray(){
' H( t, ^/ ?1 w. m) u+ K5 f/ p- }            this(10); //调用其它构造方法! R1 \0 z3 u0 j# a
        }
+ X+ o2 t8 z, }; h& ^        public QueueArray(int size){
* K: Y' ^" c8 |! P: u& n            a = new Object[size];5 H0 A6 ]; _: u. p
            front = 0;
, O5 b8 q: c+ Z- @9 V; Z, P7 A$ V. j            rear =0;$ j* O2 H  M' |# J  O& ?+ o2 u4 I: U
        }
! D; O2 m0 d) w! N        /**3 S& K# ?2 c7 i! q5 Q8 z
         * 将一个对象追加到队列尾部
, [! o& h- c2 }0 d, V' y2 x         * @param obj 对象! k' S/ q. k  K$ q
         * @return 队列满时返回false,否则返回true
6 E& P' v8 j% q, k         */, r4 t1 Q1 V; I
        public boolean enqueue(Object obj){$ w+ G- V5 H0 N: e& I) {- U4 b; j
            if((rear+1)%a.length==front){& c4 X+ X6 S5 E' w7 X  k0 M/ A
                return false;  t5 _) H4 {" j
            }: }3 p3 T1 K+ U2 m4 |% N& ~' K
            a[rear]=obj;
) ^9 f' b0 Q7 {4 ?8 |            rear = (rear+1)%a.length;, n: n% B5 ]6 E1 C8 ^# P9 U! L. D
            return true;9 s  F; i3 E0 L; L
        }' p; w" K3 L: S$ ?- `4 p! t, U
        /**  z% x3 F3 N6 X0 c6 M$ @
         * 队列头部的第一个对象出队2 ~/ l  L. a) ]! M: a2 E
         * @return 出队的对象,队列空时返回null: v4 F& y% ~  w( D. Y
         */2 E- {- k2 E0 T7 k; Y+ b
        public Object dequeue(){
7 P8 K2 T9 [# S% a* i1 P. Z/ u            if(rear==front){
# n# U1 n: [( Y3 `% ^                return null;
; i3 R& I4 b, c0 k; e            }) p! h/ M& K1 V: n' K& L
            Object obj = a[front];- B. w5 s( R) q+ D0 n. A5 J: Z% S
            front = (front+1)%a.length;1 _! k9 `9 w  t4 b" {" p6 F
            return obj;
  Z  w  T4 B5 d        }& f6 _3 E3 e2 e' O( I' |4 h! q
        public static void main(String[] args) {0 L6 R8 u7 W0 h4 w. C  |
            QueueArray q = new QueueArray(4);
" X0 u, V) {# A8 o            System.out.println(q.enqueue(“张三”));
6 P* i; G' ?1 v0 `; D. \, ?; m            System.out.println(q.enqueue(“李斯”));2 `- t1 o' k) g1 b/ F5 h# W! p
            System.out.println(q.enqueue(“赵五”));
/ O  T7 J' Q( ^0 _" _$ K" H            System.out.println(q.enqueue(“王一”));//无法入队列,队列满! b2 x  v% y& ?
            for(int i=0;i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-23 12:36 , Processed in 0.610895 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表