QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1679|回复: 0
打印 上一主题 下一主题

数据结构——栈(Stack)与队列(Queue)的手写实例

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-5-3 15:29 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    / Q" \; c9 J9 U& ^8 H3 \* O
    数据结构——栈(Stack)与队列(Queue)的手写实例
    & b) @6 }% \1 k3 N. W: X  [8 E
    / ~% ?( ^8 Q4 G! E[color=rgba(0, 0, 0, 0.74902)]文章目录

      , n1 J2 c: V5 f
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        3 Z. V( e* }" _+ b" N
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试3 A% N" k+ b9 c& M; |* P3 R( B# E0 P1 r
      • 三、 用数组实现队列
        $ @  \, N. _0 v* \0 N- E- {8 R
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试4 m7 a7 N" k9 `* C, y
    , ?% H$ J1 w& k% x$ t

    6 a( f' k8 j% @一、 栈与队列的定义
    6 q8 K& s$ s: {+ _+ P' a, X栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    8 ]1 B/ C- }+ S" t6 M 1.png ' U5 O7 v8 m+ h6 o8 X1 \9 k
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。0 R3 g. o5 v9 u  L: f1 t: ~
    2.png
    + i: i& s3 ]( ], A" I' j0 p- a: h
    9 z9 K! }% |! }+ h. X& _: l+ M- Y6 y. w. G# ^7 C2 u0 j
    二、 用数组实现栈1、栈的接口定义) `  k3 q& H& r( Z, e) n
    /**
    0 g6 c8 j) l& E/ U' m: F" E! f * 定义栈的接口: f+ E, k0 b; {) N6 H4 ]
    *
    2 [9 ]5 Y0 Y+ i, e * @Author zhuhuix
    $ N8 C9 v" j/ R, r$ v * @date 2020-05-01/ _, j" |+ f7 Y. V- v8 F
    */
    # S3 P' S3 Z. H' }$ t3 Rpublic interface Stack {, h; j* @# D/ o5 M4 f8 g6 A# q
        /**
    6 @, I3 }8 y% ?6 _$ I     * 入栈: i. u- P! I- @6 [
         * @param object 入栈元素* P  b3 {0 a# v
         */
    ' l( r8 x$ R% W& V4 s/ i+ F8 F6 I    void push(Object object);
    ) N% r! K2 J+ c3 z
    , z- ?8 W0 F5 g& ]* t; {& _, T" Q. e    /**! S1 t2 s+ x% |0 T
         * 出栈, f$ z# l% d  T' X% \8 J* e
         * @return 出栈元素6 `5 k$ e' g6 ]7 R( U
         */3 h8 `  A7 M  m4 a2 r# {, Y
        Object pop();9 u' J% h3 _7 `; T  ]! o
    0 J, Q4 S6 a8 |* a; l$ O% Y+ r( H1 m
        /**) R8 v. K4 B! J0 G5 Z
         *  获取元素个数$ j- p- k1 d- b! A
         * @return 元素个数
      l' P0 ?) n# w, b     */1 k' o: D3 F# f8 y
        int getElementCount();9 q6 b8 l# D4 @, J
    ) I4 h5 h9 s' J. e- d
        /**3 G. P" A" c! I+ B, f6 `3 ?1 q
         * 遍历栈的元素
    % {- J4 |9 k/ u8 c9 a* O- l     */7 z8 P7 n" X3 N' x% I4 A9 P8 ~7 ?2 p
        void traverse();
    ; ~5 q' c6 N4 D. v) w9 V' c6 t
    , q, @* x7 b3 P* V4 W}. }4 Y  o- |) R, o
    2、栈的接口实现
    6 O- p) L0 t; q4 y5 U/**: T& o2 ~( [1 L" v2 I; Z
    * 栈的接口实现2 o  L2 O$ a2 a' n& f2 h
    *0 d, ^1 N/ l" s
    * @author zhuhuix
    , j0 p6 {. _0 N * @date 2020-05-01
    ! P- I4 c" n! z6 R9 X, k' q */1 Q0 c# l: {' `+ T
    public class StackImpl implements Stack {1 Y# {: B* k- z; R. p
           
    9 M/ o' G3 U/ ]- \7 }7 ^    protected Object[] element;
    1 D$ d" R) t) P8 h9 Z/ n$ H# c1 o$ B9 M
        protected int elementCount;
    1 V8 S, j; y$ D( Z+ W% ]" H, e' g* C
        private int defaultSize = 16;
    2 U3 N% N6 \& Y3 _
    ( [) Q2 I" P  I/ }    private int maxSize;& P! |: T  i& b9 {& |4 c
    5 u) W0 t. a1 F9 \0 {) R. w
        StackImpl() {4 u' g; P" h. y
            element = new Object[defaultSize];' }3 I4 `' s/ ^
            maxSize = defaultSize;+ c9 N+ i% [. Y
        }
    7 c6 f3 K: t$ b- d1 S! T  U1 Q9 r( J& w! e. `8 `: r
        StackImpl(int size) {
    * E8 q  X/ c$ K* ~        element = new Object[size];
    5 k- u3 m# {1 @( @8 S' @        maxSize = size;1 y' e9 y8 w& H
        }6 l$ X9 o0 d7 y% o
    , \4 l( x& D1 q! }
        @Override9 R/ n4 i$ N& K8 y: [
        public void push(Object object) {5 |, a$ |( R; t; J6 U1 x; C7 t
            //如果元素个数已经达到数组的最大个数,则进行扩容# G& x6 j- B# x
            if (elementCount == maxSize) {
    + a2 U, @6 R) {9 K) I            element = Arrays.copyOf(element, elementCount + defaultSize);7 x( B' ~( I% M1 Y5 R
            }# J, r4 G1 P; s5 `& r
            element[elementCount++] = object;: @( j$ B0 @6 |
    7 V5 p' N/ g9 G' P6 I  |' b
        }0 D! c, B4 i) ], `8 P/ j3 ?
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    3 i5 |# Q8 A# e: E    @Override7 ]1 R7 y+ T6 p4 o
        public Object pop() {
    ( O* ~8 V: p/ f3 R' i2 P1 q        if (elementCount == 0) {
    3 t- C. O  i5 B9 o. v            throw new ArrayIndexOutOfBoundsException("栈中无元素");
    " D5 h6 ]( T7 m/ {        }) L' |, y$ ?% |; G6 y/ ^
            Object object = element[--elementCount];- l6 a+ a8 ^! F& O4 [& {2 m$ o( f/ D
            element[elementCount] = null;
    ; `9 r% I$ S4 m  z8 I5 j. a+ ?        return object;
    4 ?) r/ g' ?1 `3 K1 h7 |0 s" y    }- u" v; P. A1 O& d( {) S! z- y
    ; l( C2 T! d; j2 i; |5 R! K
        @Override* A. M$ D3 D% W
        public int getElementCount() {  g6 u, s. n! ?* b  A8 l6 u0 K
            return elementCount;5 O3 h; d( _5 h7 K
        }( C6 ^. n+ I5 g9 L

    6 u1 B5 o8 E: t; [# }# m6 S    @Override8 y! [6 Y4 p  s
        public void traverse() {# l+ R/ S" x3 r4 g, a" Y9 W
            for (int i = 0; i < elementCount; i++) {
    3 V! M+ F1 x% [6 p            System.out.print(element + ",");
    * j9 f1 j' i  T6 S2 P; }        }, [) w, ^& v6 {3 j; d( k
            System.out.println();
    2 Y) p2 U  D) X' M% k    }
    0 ~7 x0 Y; ~  ^! P}
    " @  N! I/ U5 J. F8 W% a; y3、栈的测试
    % I3 ^% |& |% Vpublic class StackTest {+ [6 L! j5 i9 Q& C- y$ d+ U
        public static void main(String[] args) {
    6 J* C1 K# K- ^% x' z7 T4 B2 N        Stack stack = new StackImpl();4 ]+ }0 `0 c( P4 M8 {: y2 n

    4 r) d9 L" {1 E3 Q! S; ?0 E        //第一次入栈:压入1-15
    ' v- v4 x. C! @- S( I5 ?        for (int i = 0; i < 16; i++) {
    % t6 O" G4 b: ~. F7 c2 {* E) K            stack.push(i);
      b) w( F( c) M" [        }
    , u; J0 D: o1 y" ?        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());, A, y% F# j5 Z: s/ M1 B6 O* ]
            stack.traverse();
    : B9 z% E8 J" J' J. Z; S, _- l$ A. W( O+ V
            //第二次入栈:压入16-31* k+ v( k  ]* g  v- b
            for (int i = 16; i < 32; i++) {' C/ }# n' E! r9 [" x5 p! y
                stack.push(i);
    2 i9 h; i/ K: ~$ F8 D$ ]        }7 S. e/ [$ G# \8 Y2 V
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    - I$ _* E0 S9 R/ K% f6 v# u1 ?        stack.traverse();3 h! R% w1 O( q4 {) z$ o8 ?

    7 }# o4 d5 r; \/ S        //第一次出栈:取出31-161 k' i9 m% `- ^8 L' M  |3 C
            for (int i = 0; i < 16; i++) {
    5 S) D; ], }* h, f& j' m2 E            stack.pop();' W) E, j+ m" r) [0 f! o
            }
    $ ]0 W  h% k) s( C' ?$ C. A        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    2 {; P3 Q) A$ q1 C        stack.traverse();
    6 ^: d7 B' Y# F; ]9 O% i; u
    3 D. D0 _- p9 }        //第二次出栈:取出15-0
    & g+ l! w, _/ |$ L        for (int i = 0; i < 16; i++) {
    $ K& X# O' \/ s$ N, Y1 o8 |            stack.pop();- ~0 I+ y  g+ S" k
            }/ D$ x4 X+ |% i  E
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());4 y4 V6 f% ~, t
            stack.traverse();
    6 s; D0 c; K% F
    ' R% @4 }. K# Q. s  s' J        //栈中无元素,出栈报错
    9 w, \$ e/ O: A, m9 D& e. y8 t        stack.pop();
    - p! u/ _3 w6 U" @7 m( ?/ T1 f( G& n' G' D7 f, Z& z( m
        }0 O! o' y9 y; d! |: |4 `7 W
    }+ e. X$ ^/ I: u+ N6 [  Q/ J
    3.png
    ( M* n: o* |3 n9 Y- B6 a" [. z0 v5 k  Y1 _; `# b
    5 G# z* E) d" R; S
    0 V( o# A. F; [6 c/ O: b4 ?
    三、 用数组实现队列1、队列的接口定义* A( g) I' j: m6 e& ~6 Q
    /**1 e: B# `( \- B' n7 u
    * 定义队列的接口6 \6 Q3 k  g$ @! V: N, q# u8 p+ M
    *7 B, A- s( M- s' l
    * @author zhuhuix. q- d, r/ b$ f! `
    * @date 2020-05-01
    8 \( m6 x( b. h5 N% F */
    " Z) K! b9 {  ^" S, p1 t$ m/ Upublic interface Queue {
    : Z$ l0 M5 p5 H' {$ D5 n. S7 l0 n1 N& e  L- a2 s$ m" Y
        /**
      h! L8 ^8 J5 d4 v/ A3 {' D! _     * 获取队列大小
    + O! w% k7 L3 O     * @return 队列大小
    " a7 c2 ~5 z" o, F     */6 e9 k6 _" f. c4 I' }
        int getMaxSize();
    ) y& ^) D9 H/ a! X; t- N" [
    + f% i) G/ p2 i5 l6 L    /**
    ) W  L( ]( T$ m4 W     * 入队5 Z" X+ a- c. k; M0 y$ A1 B% r5 q
         * @param object 入队元素" n5 U6 }; u# ^5 a0 J
         */# f0 J: }/ T* z9 r1 _
        void push(Object object);- X0 ~! P* b7 L) F

    2 l2 S; e3 }7 B& T7 L    /**" t7 }) y! Q3 l/ ]) \1 y4 D" ~0 a
         * 出队. T/ Q$ l, Q0 B, e
         * @return 出栈元素
    4 \+ o" X) ^' q. X2 \) A4 C. }     */  E! \8 R0 [/ n3 u
        Object pull();2 I/ Q) C5 {' z. I% A* {" U  C* M: |

    ) m1 Q: i, l/ A2 T/ I8 z    /**$ n. S( o) u4 h3 H: ^" l
         *  获取元素个数- E: Z: q( y/ N; F% l& v/ y7 w
         * @return 元素个数, T1 l. b/ K$ r
         */
    0 W% b- H1 N( V    int getElementCount();. x/ [8 R: g2 Z, s3 ]8 J* A7 v! q

    2 q6 T; t7 {/ g" m. D    /**
    / m# y; u6 Y' J  e. V- {" ]     *  获取队头元素
    + }( v. @9 P6 v" G& V6 a2 p" e+ j     * @return 队头元素0 T0 F! o  I% x$ S. T# t
         */% u4 F) a* q0 Q& J3 F& X/ f
        Object getFront();0 T0 d7 a; {! f; U0 r

    4 k- }6 S" l# E( T2 a" \    /**5 `! ?4 E3 {, F# m% I5 i
         *  获取队尾元素
    ) v! L2 s* G$ |2 r* k6 W& p6 i     * @return 队尾元素/ ~# j, L- S' o; N( P1 y; t+ t
         */
    ! L% m# B( d$ g* |% ^1 C2 J0 {    Object getRear();* W0 y$ D, \) X

    6 L  e& ~+ N7 g, v5 e- g/ P& K, A# N: }    /**
    4 Z7 P7 {, f/ T0 Y) q0 g. h     * 遍历队列的元素
    # Y  |) L3 b4 M0 _3 R+ c6 p0 ^     */
    4 ]1 O7 _+ t. z+ b, q    void traverse();! K; h- `4 D1 P% o$ f2 p
    }3 {0 r5 X7 ~* _; W; W7 c1 ^: l
    2、队列的接口实现
    " B1 i+ B1 m. _: h/**; v- w. P8 C: T8 D0 R+ w
    * 队列的接口实现
    % I! n* O: P$ ^+ Y# d1 q *
    7 Y3 G, o6 d4 u# C  U* N * @author zhuhuix
    " K! h& o8 s  x% ~& H) T * @date 2020-05-01) h3 i+ \  g) y1 a& m% q. A7 M
    */
    $ Y6 n' P. W: `2 ~1 Gpublic class QueueImpl implements Queue {" h6 ~9 \/ v. k1 Y* r( C

    + a6 v5 }; |7 T+ I6 G+ D    protected Object[] element;
    * J$ o& r7 U2 u, B
    7 E1 Y1 w$ T, |, s  U    protected int elementCount;. z9 ^6 c! `. w  K- Y

    : q" S0 x3 f0 a+ E$ H" ~    //队头
    1 z) Z* a: X8 K) B# Y! U    private int front;2 [, d8 _# E$ m# C2 X

      s! i+ `( p5 k4 F1 M    //队尾
    . K0 h" v9 F6 f. v    private int rear;( L. o+ N9 i. Y4 c2 ^
    " z- V! h. p2 Q) y# N9 V* o
        private int defaultSize = 16;9 f0 S" h5 J5 g! N
    ; c* Z, U% m8 x7 ~
        private int maxSize;
    ) r# ?2 G+ D. p" m7 s% H- C
    # Z  `; K8 i0 n/ m0 R    QueueImpl() {
    - J9 `$ e% }' z" g( Z- E* _        element = new Object[defaultSize];2 S% P' _0 s* Y1 y& S0 ^
            maxSize = defaultSize;/ @; L  D  Z* N( G) g4 ?8 f
            front = 0;
    ) q" |7 B! @- J6 {4 F2 z+ F: r        rear = -1;
    ; n- X- ^4 K3 n# i9 G7 C    }
    : k0 w1 ]% f( G) @) V
    4 F& d6 V, F1 X7 H    QueueImpl(int size) {
    ! l- A0 w4 Z9 d- t        element = new Object[size];! k. y& r3 U/ D
            maxSize = size;
    & V( B3 k6 f. i3 A/ Z! G& M        front = 0;8 ]4 _6 V& n' F4 A& f' x5 G/ b/ h
            rear = -1;) v6 f1 ~: ?& `) [' ?* O0 J
        }
    6 _0 z" B/ ~+ e+ i& E" k/ U9 l5 o# J: ~2 J+ `
        @Override
    ! m; B$ h# o8 ]4 F3 E8 Y% f    public int getMaxSize() {' B0 n2 e5 G, g' @: A+ @8 X+ k, r! h
            return maxSize;3 L& M1 ]3 P3 b
        }
    4 i# _$ }; d# T2 F& k  ?7 q" k/ \. r7 s8 R* J5 N0 e" n* D
        @Override; s1 ^2 \8 N& h2 A& R! N0 @
        public void push(Object object) {, A4 [, y  k) b6 H# o' o, w
            //如果元素个数已经达到数组的最大个数,则进行扩容2 L% U4 V$ A6 l5 @9 n1 X. H
            if (elementCount == maxSize) {
    ' e/ Y3 F( i  N; n0 O" q            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");1 ]& ?$ w. W9 k4 [9 e1 [/ d
            }2 n0 h- ~1 _' L+ ^; n7 p, D9 i6 N
            element[++rear] = object;+ e) A3 J" r' Q; w( F
            if (rear == element.length) {: w1 a3 L+ `# i: Z5 Y8 t7 X2 {8 j
                rear = -1;
    ; H4 W5 p: E9 ^        }- V. y( V3 }: V+ M  K2 \0 d
            elementCount++;- \' A6 q  t. {
        }" m4 F' z0 ]# T9 s( d  ^

    # f9 r. c& y2 @4 S& b  v    @Override
    5 s3 ~* o. l7 I    public Object pull() {. `) e9 \" K; {% F$ U  z. h" ~
            if (elementCount == 0) {
    3 n& }2 S5 W; c1 M( ~4 V            throw new ArrayIndexOutOfBoundsException("队列中无元素");; d7 _1 v. O% w
            }; s5 v: S1 {$ |/ }$ L. O
            Object object = element[front];
    & l$ u' [" t. T; [; k/ t        element[front] = null;) m% ^) v! [& Z- F. a, M- Y; J
            front++;# H) r0 h  }, I$ n
            elementCount--;, y! b, y) R4 @9 s) Q
            //队列清空,队头队尾恢复初始值8 [  v. z5 Z- {
            if (elementCount == 0) {0 f) }$ p/ F2 y( K6 M, c
                front = 0;
    " r% p( u/ n& ^! x+ G  f            rear = -1;
    7 |" d* c7 x7 g" c( `. u        }' D3 G# {  ]/ H
            return object;& N$ R  ~, a" r; h5 P; F
        }
    ! W9 i# ]2 X4 i8 B( y9 k
    3 ]5 |8 L, S1 ^7 F5 z    @Override5 f- ^0 R+ `3 U8 Y
        public int getElementCount() {
    ( E7 z# N1 h' C2 J        return elementCount;
    ) [& T6 a/ [- P* B/ K# c    }
    ) I! L& q1 s2 S
    + k- S3 c2 U. E; I    @Override
    ; T; j$ ~; ^$ O# P" n: k3 m    public Object getFront() {
    " Y! r2 |  \8 e) o        if (elementCount == 0) {, a! G7 y( A9 t" }/ s
                System.out.print("队头无元素");
    3 W- j' y( _/ [  ]2 _0 [2 N1 N            return null;
    ! |$ }' M( O1 q( }        }- y  o' A( y9 f- _% d
            return element[front];7 Y0 \5 q2 o! J3 B. }) I( z: q
        }4 B5 s; c8 Z' W8 k' n

    - D8 b3 k# v0 b3 \    @Override
    8 S0 u/ m3 \# v0 F5 A4 Q# p0 ^- \    public Object getRear() {; i  m" }  n/ D" A
            if (elementCount == 0) {
    8 M5 j3 J# v1 u. G6 C            System.out.print("队尾无元素");* v8 \0 E" t5 K% v# I
                return null;
    , d1 i6 u' W0 g8 A: q( C# w        }5 `5 v8 S1 R- P  Q( x
            return element[rear];
    $ F% h0 L- s: c' J    }
    # X1 G, d: i: R* t2 ]; ]9 Y
    % W8 [2 _3 l; _* H2 n7 ^. ?    @Override
    2 m& V, i2 B% ^1 H5 U    public void traverse() {
    % x, b: J, R1 C! L        if (elementCount == 0) {6 S" R. B* U, s
                return;( C, K  G% h# _# ^# W" m5 f; B
            }! \* {- m& X3 ^1 s5 S
            for (int i = front; i <= rear; i++) {
    7 Q  s9 n/ N: `) H3 _$ D8 M4 }            System.out.print(element + ",");. Q' j6 D" j& Z+ q, W+ t' X0 X
            }
    1 H( x) G: M0 Q+ G/ k1 }0 j        System.out.println();
    # T) g( {: Q+ @% Q  y    }9 j) R1 o) L3 u
    }
    " ]7 h1 V( X- h# Y1 ~* t: N
    ' U& [, M" ~- Q/ E8 v) c1 r7 p; D0 i& x' f' ]; x8 O
    3、队列的测试
    : m& Q  a% u3 d+ A9 A5 M$ ^public class QueueTest {0 ~+ n/ w& U# n9 x) T- \
        public static void main(String[] args) {
    4 U5 ?: X3 E/ f; @1 p9 U/ K8 S. `( N        Queue queue = new QueueImpl();
    7 R7 N; v% l4 H+ V. W; k
    / R/ X, N; Y# `( u. _        //获取队列大小0 i5 u" M. u6 a5 I; h: R
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());2 s8 u7 F: ]- A
    : P0 g6 |, x1 U( t4 t* ?; }! d
            //第一次入队列:压入1-15  U4 {; s8 i) o% c$ U
            for (int i = 0; i < 16; i++) {7 n5 X. V0 v9 M0 Z
                queue.push(i);
    $ }. p: `; }, S( T1 Y. Q        }
    5 s" @0 l! l+ T. O4 `        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());& r: d7 T# K$ Y% T9 {" G
            queue.traverse();
    6 A/ p' K+ [  z        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());3 L3 ^; A; w3 N3 w

    - k9 ^1 B/ F# ~: W' R& u        //第一次出队:取出0-15
    # U( S8 g- o% N4 s  G( Y        for (int i = 0; i < 16; i++) {
    8 I/ g2 _3 c) v, V            queue.pull();* r; b' Y5 m+ Y; X7 k$ Z9 V
            }6 [/ Z) q  F, {7 n4 Z
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());, Q, V: s2 R6 T% s. k% [
            queue.traverse();
    & R7 v2 [: ]6 O! {        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ( f0 F( |9 s9 k" [& {6 r  ~+ L
    . G+ _: o9 G% C( m" a" C" b
    * V5 t/ N# l( U4 a' g        //第二次入队列:压入16,31
    ' t' U# \8 t+ m5 g& G        for (int i = 16; i < 32; i++) {  ^$ c" H) ^' s! ~7 A" B
                queue.push(i);
    : t  J8 e" ~: Z& N0 T        }8 I/ W4 J$ A0 u- M
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());( u# _3 P' p) C. y9 d* l3 [
            queue.traverse();
    2 F; D* |5 E- Z3 J9 `* @' d) m2 s6 v" A1 [# `1 p

      Y+ h) b; [1 P# w  |$ f        //第二次出队:取出16-318 {* M6 v* |& c3 E
            for (int i = 0; i < 16; i++) {5 p7 l! E) g+ V- C: N
                queue.pull();4 I# x( B" w* Q7 q
            }
    - u* }" d3 B+ j6 R5 T1 A7 W        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());; l3 e# T# {2 q, k+ K
            queue.traverse();0 M; e8 m9 [' |5 k5 O: {

    : e* }% d2 [: ?- |6 o  [        //空队列出队报错" R& i$ k; D  V
            queue.pull();& g5 L# f6 V) l  t" p5 a
    6 P+ R/ n1 K1 _+ F7 N5 F
        }) x% t* @. f, l, o" p* \. f( @
    }
      T; _& s1 f) w. f  w, I2 d
    : \* A$ I  @+ A8 u# k4 R7 r7 a+ `. |
    3 Q0 d! n" d8 E4 C3 T

    ! K2 I- @: E. F2 t! l$ t6 l+ s1 U& Z; \% q! ?
    % X* ]2 o: H3 B) |  x$ ?

    - Z% Z7 Q' I+ d# s& q  \5 `' a( O% A* b& ~% n

    ( ?7 v1 Q5 w) w
    " ^% ], Z: s" E" x' T5 `, }+ ~
    ; C' ], ~! a0 |
    % Y/ T* U) h  }3 ~
    8 ^' {& E" L+ |+ y# A
    / I, V. O; `# `- K8 Q& Y. r
      f" z( _, ~0 p( r$ u————————————————) n; _- c; g5 p$ F
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。7 o* n  }4 g$ ^( V9 T
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785, {$ p" M/ L3 l1 D( d1 l
    ) C% Y' Q+ K7 V' g" W) w4 R) I

    3 }8 s6 T- x( o$ F' g; C( {! A; L
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-21 04:01 , Processed in 0.450175 second(s), 53 queries .

    回顶部