a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 169|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java数组实现循环队列,队尾指针为rear,队首指针为front,队尾入队,队首出队,数组空间循环利用。 $ g4 a4 H- R+ e3 Z: \
    view plaincopy to clipboardprint?8 d* c( F- G. u  Q8 l
    /**. B( H& N& V9 \( J$ O4 G! A4 p& f7 z# q* ]
     * QueueArray.java2 |1 W) Y' P# J' B* p0 v* B
     */  l6 s6 A' h; y0 e  N; ]( O
    package cn.edu.uibe.oop;
6 p7 Z: v9 i$ L/ i$ ^$ \, r- R    /**
; K2 p3 ?/ `2 ^9 U/ l% T+ [4 h     * 数组实现的循环队列2 c3 C6 b  i6 |" n1 R
     * @author TongQiang
6 W! y, a9 ?7 _' M0 O     */- ]0 w9 S6 {; n3 j" H
    public class QueueArray {- z2 q  _  r2 q/ W8 _! A
        Object[] a; //对象数组,队列最多存储a.length-1个对象
' _4 O8 j7 B( {! l8 x        int front;  //队首下标
$ K1 T. M7 F  S! e; _3 g' p        int rear;   //队尾下标* j( z9 n. M8 o- w6 t. S
        public QueueArray(){6 w+ o, a$ ]; I: l5 ]* b& ^+ N
            this(10); //调用其它构造方法- L* D, j( S/ I5 f/ Z. z) [% |
        }
( h: j  p9 v4 K        public QueueArray(int size){
# S5 F! v5 W- {: P: U5 M            a = new Object[size];
, u2 |% L0 I- U            front = 0;
2 i/ o2 h2 K# D  h            rear =0;
" s5 g* v3 n" h7 ~        }4 _* J: s% B  e0 ~
        /**  ?$ Z% t5 b. e5 |1 e& R4 _" T' B
         * 将一个对象追加到队列尾部
) b% t5 e8 o; x  C# ~9 ~1 a% i* Z# ^         * @param obj 对象
6 t* ]0 @1 G% N: o+ u) u         * @return 队列满时返回false,否则返回true
; ?( o  ?; b( x0 t* q' a5 |         */- F3 E: \" u/ L& y- Y
        public boolean enqueue(Object obj){. X' H+ M2 `0 H1 m/ e
            if((rear+1)%a.length==front){3 E: s1 e. ~" l  T& r3 d
                return false;. T1 _+ G5 t9 M) V6 d7 p
            }
" {5 {% {( a: ^# Z1 R! u( v            a[rear]=obj;2 i5 k" T) N: z& l
            rear = (rear+1)%a.length;0 ?* P/ `# f4 {  a- N; M% ^
            return true;5 S9 l7 c) S& x2 ]/ ?2 f3 P
        }
, ~% B: _4 A  P- a        /**8 ?% o$ A2 D1 H, X
         * 队列头部的第一个对象出队+ c$ ^) |$ V! B: z; J
         * @return 出队的对象,队列空时返回null( o. [" S: \4 [! H  H- N$ j
         */
6 h% b- s  E2 O9 @5 ~        public Object dequeue(){2 I5 S6 R3 X% {$ s
            if(rear==front){
, V+ R% z, C% @( W  a3 I( U                return null;# _) ]" M) U9 f! k2 ?9 \, a
            }
- o2 b1 r+ g2 X7 z0 k4 T  E8 ?+ \( L            Object obj = a[front];; W$ {) e) d2 e7 n/ g% J! H; `. h( K
            front = (front+1)%a.length;
6 C! M! E5 S9 Y7 Y            return obj;
/ a. P+ Z  O' U5 w5 `' c0 \        }
& {8 w! N9 o) t% I        public static void main(String[] args) {3 h. ]# w  }+ {5 K  ~# p
            QueueArray q = new QueueArray(4);+ a( F2 G" E' C( _4 J
            System.out.println(q.enqueue(“张三”));
& F  b; Q8 i0 r9 }            System.out.println(q.enqueue(“李斯”));9 Y, s# x! G: V/ C3 A& w
            System.out.println(q.enqueue(“赵五”));
! |6 V' v  i$ [$ K. n/ L            System.out.println(q.enqueue(“王一”));//无法入队列,队列满( P2 b1 u( i/ ~- v
            for(int i=0;i
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 03:14 , Processed in 0.200594 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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