QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1680|回复: 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

    - J! |' h5 t3 [' j* S数据结构——栈(Stack)与队列(Queue)的手写实例
    0 j& B  S& i/ ^) h, M4 m4 B8 i5 }, M+ ^1 Q
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      . Z2 d+ Y7 u7 r* A. N( g8 e$ m
      • 一、 栈与队列的定义
      • 二、 用数组实现栈) l2 j7 k, j! ~0 G
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试  K( V- ~) s4 r" w" K
      • 三、 用数组实现队列
        5 I/ |+ R* p6 Y
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          ) _; D9 ?) W+ d
    ! N: T; k; Q/ D

    ( f  k& }! L  j; c( ]- ^一、 栈与队列的定义" Y% u# k/ o+ j0 c2 O
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。. b# e; \% |4 ~
    1.png , |) }! {4 v- i9 o9 E
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    . D1 T) w& Y/ J, X8 D3 j( a 2.png
    2 l3 `. }$ c  ~( y* d+ N
    , i$ z$ l" f8 l! A7 p( z* b; h3 ]1 L4 W* W6 ~
    二、 用数组实现栈1、栈的接口定义+ X! V; f' Z9 z1 S# O; W
    /**9 P& U0 ~  q. h9 W9 M: l. |
    * 定义栈的接口
    , x- b" V% t8 n- f *+ k. O) s! h& J8 W; D- w$ V
    * @Author zhuhuix
    2 E/ ^: X1 |% ~0 y7 a * @date 2020-05-01
    ' A, W- _+ x/ G7 w+ b" Q% c: f# { */* B$ w4 {! D) P; p" t* \
    public interface Stack {& N2 Z, E' b" r) f
        /**
    , i, E* y# h6 h( c3 N5 A  `0 h; n  i3 _     * 入栈) D# N! R; F. u6 q2 c7 Y
         * @param object 入栈元素
    ' w8 B1 b- e( `+ ^% t     */1 Q! l) d, ]8 n
        void push(Object object);, x1 }& |* V4 l

    / g4 g7 G# W. i( N) _/ H9 ?( P    /**
    6 l7 c9 z# Q' s7 l" Q7 e0 Q6 }: G     * 出栈
    . }: ~) I3 H& {5 `     * @return 出栈元素0 ]; z" L( f6 T, E1 k0 b* \
         */
    ( }, D+ v: \; }. {- b" ]3 Q    Object pop();
    / K9 |# s5 }4 D& O! o7 j/ Z; H$ E/ j% k  i! ^& |  s
        /**
    2 v  L+ C  U1 v3 h/ v5 ]' W6 w: W     *  获取元素个数  i7 E; Q' P# E% V9 O! i
         * @return 元素个数9 N% E$ s( ^) {- w) s& p* k
         */
    ; m0 Q* J5 n/ T" A% H/ ?) T    int getElementCount();& b3 c* j. m9 s5 K% N
    - x$ e5 {) I4 ^) X0 U3 ^) @6 q
        /**( K5 w) M' m5 ?3 F" G6 m, R# [# g  i
         * 遍历栈的元素
    0 f: e: S, v. ~2 M4 O2 |: ^# z     */2 N: E/ |8 Y; [  ^8 w4 c
        void traverse();  K* |$ F1 {4 l. r/ ^- l

    ( [6 F7 M2 m* K  m) J# K}4 I2 d  c, n6 ]: @- _7 I
    2、栈的接口实现: F( e. z3 [. D$ P# X' L0 ^2 U3 c5 s
    /**# l% y: V" V; I3 P, |9 R9 V
    * 栈的接口实现
    # ~. @9 `+ U' P *% W% j0 ^9 V8 o* X+ M3 w
    * @author zhuhuix
    ' D. @+ o# U# }. E% `5 A! o: ~* y * @date 2020-05-01; X  ?0 O6 g# k
    *// w" r# M( A$ R: p% ~
    public class StackImpl implements Stack {
    + ~3 d& \% C) }0 e  q9 ]. f, q9 J& w5 s       
    7 v( W+ {4 \, {2 j9 ~: L; ^* F    protected Object[] element;
    5 v- @+ Y; i6 k3 V$ J$ }. C, `4 R6 p: z. E( a- W: l; ~+ R( m
        protected int elementCount;8 j. L4 A5 W& n# \

    + y+ W2 K9 A* S( W4 W& b    private int defaultSize = 16;
    / F) W/ {4 T/ k6 q+ T. C3 J" i9 ~3 s* h! u
        private int maxSize;$ {) @8 A3 \& }0 e0 Y
    5 u4 S: h' c# N4 A
        StackImpl() {' J" [" Q! Z* s
            element = new Object[defaultSize];7 w( |1 A3 Q! s6 L/ i; [& V6 d* c
            maxSize = defaultSize;
    9 q( L$ ^, p4 J/ ]0 U7 |! y2 G    }
    6 u1 J; s5 s  i. z5 I4 v
    $ w* B: c% N9 O4 w( W7 ^* Y    StackImpl(int size) {6 B2 S; ~6 c% V& X! I) W4 ^
            element = new Object[size];
    ; C, _% x: j  T: E        maxSize = size;
    9 }- ^& _9 [: {) G% T6 o. V) @    }0 G. Y8 F% V" p$ v, v
    8 e4 h6 [6 K8 `5 j2 K5 b, G* J% f9 N  w
        @Override# E1 j3 k  Z; D: H+ R  b
        public void push(Object object) {0 J% Q8 A% r8 c9 p3 Z' f
            //如果元素个数已经达到数组的最大个数,则进行扩容
    / r& N6 N6 }& P" X4 T) w" O        if (elementCount == maxSize) {+ o+ y6 M5 F% y
                element = Arrays.copyOf(element, elementCount + defaultSize);
      z) R: R: R/ _1 l' d! u% d* O        }2 h4 ?- V2 f$ ^' I+ w; W# o; i
            element[elementCount++] = object;
    , G5 N6 a. e; B3 Z: d
    ! [) n0 O! k* V. ?; o* e: J    }
    , E- c6 ~3 S. I  K  ]        // 本代码未实现数组的自动缩小,具体方法可参考JDK  @/ O) [' L, ?
        @Override
    7 B+ w) P% q# J8 s    public Object pop() {
    . _( _% `& o% ?* b/ R' E        if (elementCount == 0) {$ B) V* K2 n2 ?
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    . \9 N( M+ }. P; S4 J        }
    7 v+ N; u$ ^3 x+ R# `        Object object = element[--elementCount];/ O  V* p  A# N- G/ }$ Y
            element[elementCount] = null;
    2 d# n  ?4 S  @7 v# ^( j; @4 f        return object;% |% c! y  ~# e/ i* m
        }
    5 x0 I' e" o  p+ p9 {
    ! _+ o' ?! t+ C; f    @Override0 m0 S" i* m, p& y  |7 f2 ~
        public int getElementCount() {
    ( D: H( z% F' C) v+ n) b: U        return elementCount;* n6 Z; c7 z0 n' p7 v
        }
    ! a7 E. O+ h- m: y) [; K
    9 F: `- |4 m. l    @Override5 B1 f2 ^! W: J7 r% j& }3 k% h% \# I; [1 ?
        public void traverse() {
    + j4 q3 e: y6 X: @9 v        for (int i = 0; i < elementCount; i++) {
    ) _, X& \/ i6 I* S! F            System.out.print(element + ",");
      s. T3 Z# |4 B/ V* W' J3 l6 k& L        }& V2 `# P. J) A, o! Y3 n  P) Y1 _( Z
            System.out.println();
    ( c( ?5 u5 ~% k( Q# r; \4 N3 \1 @* C    }
    3 E# A( w  `+ x) I+ Q}
    # m! K) t- [  b9 H$ D/ P1 F3、栈的测试
    * w3 @. K$ Z( `" F( Ipublic class StackTest {
    ( j3 _" g! y% n    public static void main(String[] args) {
    + m) m+ z" u+ u0 m) w: @3 B        Stack stack = new StackImpl();
    ( J3 P3 D4 U5 t6 U: U- l  J0 G  d7 D" g$ @: u
            //第一次入栈:压入1-15
    + X% I+ c1 C8 }& G; }3 z0 e        for (int i = 0; i < 16; i++) {
    ( j. `2 y- s% Y. L: m1 u            stack.push(i);
    3 y2 S: _0 J0 l, }        }
    / T' j7 s. x. P0 s9 u+ R8 u        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    ' {+ ]3 [# Q8 N8 v- f+ _        stack.traverse();
    ! Z$ P, U* v& I% _5 {% P4 J& r6 w4 g& ]/ \* t
            //第二次入栈:压入16-316 c4 f' C. t% x# r7 w- G9 U* {. y) B
            for (int i = 16; i < 32; i++) {
    & G$ D1 D* l. n8 y+ U            stack.push(i);
    ! A' Y4 o. b6 E1 |# A  t) Z7 C        }
    2 w1 u9 j1 I' r- G1 q$ ^% V        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());3 G4 N: A5 ^1 Q1 u- c% Q
            stack.traverse();
    1 d! j# x/ r0 ^& f, _) j8 g
      j8 ^2 T0 f5 S/ A& ~' F: a        //第一次出栈:取出31-169 D/ @, R* ~/ q, n7 O; y& i
            for (int i = 0; i < 16; i++) {+ S) L+ Z( Y+ ?! X
                stack.pop();
    * O  @2 f: ~: i$ p* ]7 J        }
    8 A/ E# p) B0 E- A. s4 p( A( a        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    4 O3 I/ a- m' @+ G- S2 e        stack.traverse();8 u' w  }$ T( l5 D0 ~& F

    " s" p: `; d' V& D( @        //第二次出栈:取出15-0  W  H. V' ]* g1 i$ ]
            for (int i = 0; i < 16; i++) {
    , ^6 J" \! @( y& k0 J            stack.pop();: H/ G# a" e  I  ~) p9 q* T
            }
    ' {9 D, F" t2 }, x( L$ ]8 e7 U        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    0 l" U$ D5 K9 N4 v) k+ K5 Q        stack.traverse();: t, Q, t  P) s9 g- ^  a

    0 C- a1 x$ A% G% `2 R        //栈中无元素,出栈报错) V6 ^( @( Z) _' I0 G4 }+ T- b, l
            stack.pop();
    / n$ E) F5 G+ Y# a5 N$ h4 D# Z* }4 d& D0 ~7 A4 g# n+ s
        }" m; o) [3 Z% d3 O2 ]7 L6 c3 S. H' T
    }  R% R! `# p# O
    3.png 0 a+ W+ L  {2 F1 t
    - R3 f6 j. \) K* [6 x$ C4 M
    3 b/ u. s* E: G* P6 Z4 x7 a( k
      `/ s1 x( f3 ]
    三、 用数组实现队列1、队列的接口定义5 i' L7 s8 d/ c, k4 Q! m0 R
    /**
    ) M8 {) I- Q& H, L * 定义队列的接口
    ) L# @% w# U% z: @# Y *7 Y, E2 ]* l7 V+ N( B, e2 O
    * @author zhuhuix
    8 {0 m4 Y% u* _, x  C * @date 2020-05-01
    ) H+ ?  b; `/ {! o */
    # v" c! W- D% H: A. h# B# _public interface Queue {, v1 o" P  y. j! S( F

    - b5 s  i. P. t/ R1 M    /**- O& m- B* M& _$ z8 W
         * 获取队列大小5 o3 o. c8 o9 `; w/ f; R8 Y
         * @return 队列大小6 p5 [8 T4 _/ D, ]$ d+ g% I
         */8 f8 |* }, V8 j
        int getMaxSize();
    ! }: F; m3 E. @( I, x6 H% W+ {% N/ j
        /**& R' ]1 P4 @% L3 M4 i8 R/ K
         * 入队
    4 t1 h" v+ |- b& U4 u# @     * @param object 入队元素" O! `5 H& I' q
         */
    , H, L3 G  }9 n" O5 ?    void push(Object object);+ C! f9 x. a$ t( c! w. f4 ]& _% @5 q

    2 T7 e& f. n! G5 D) X    /**
    % o: |4 F% k4 L8 ]/ @     * 出队: _( `: n# L* D
         * @return 出栈元素5 l$ |& h( z: n! A
         */& N9 ?; w2 k# O$ I
        Object pull();9 A& X! \! H0 {1 G  z, f8 B3 t% [

    $ ^6 ]* k' _: }3 q3 I8 K    /**! T. j* R& r; K1 O
         *  获取元素个数/ |1 g# L$ L8 H
         * @return 元素个数8 r1 t  w& E/ \
         */
    ' I8 L2 ~! D1 ^+ W& ^+ U    int getElementCount();
    ! }' E" {  E" b* e8 W! z9 Q
    ) p' I1 K/ T( _    /**
    2 ]  c" R. U& Z6 X7 t% D     *  获取队头元素' R# U% o! ^) {6 H1 D
         * @return 队头元素
    # M5 U1 U. v) \0 W$ K5 q# \1 [     */
    - P$ ^* s) U8 _& p    Object getFront();
    * ^4 c. z1 }( ?6 ?# J8 \  \
    2 a8 s9 a: i3 e( U& |0 |    /**
    : \! a. V( X' l; |, F: c1 H     *  获取队尾元素
    6 l, ^3 \* ]; L4 f& i  b& f1 V9 T     * @return 队尾元素
    . A9 }3 ~% \4 x* Z$ m) Y. |     */4 P3 O, s. a) _5 A5 F6 }# ^
        Object getRear();# {; e) U- O) @( s  E

    ) q9 K5 f7 M7 j    /**
    4 N! I8 S( p5 n& M     * 遍历队列的元素( m5 b+ p' H# s& `! u
         */$ q  T) M  `0 D, v% \6 S
        void traverse();
    ! G' g( O% @  t}6 x1 x; G* |$ a6 I" B' R
    2、队列的接口实现5 E& v7 A# e6 f9 @
    /**
    . {/ {: |  @% d& S * 队列的接口实现
    8 h% r4 }9 X# {0 |) y, c) C7 R *
      o" t8 S/ L* e1 O * @author zhuhuix- ?7 R8 o# s' Z+ Q" y# m; n- Q( R
    * @date 2020-05-018 h1 @4 N- g8 O2 J) c) S
    */5 C* L8 t' F5 V1 v
    public class QueueImpl implements Queue {1 Z0 S8 w8 N& m0 @) S1 `% A5 l

    % w% J2 i" E8 D5 g; [0 t    protected Object[] element;+ X2 E" _' Q7 b
    7 O! }7 @+ f9 w1 B
        protected int elementCount;
    . l- q) |1 o. J+ D) p5 @4 S& U6 Y7 o. k4 r1 d
        //队头% r# {( u, f# j: d7 z2 s
        private int front;* ^& U0 C: E6 ?$ }- _+ o

    ( a  K- c$ c1 E; `2 L1 S  {& L) g8 }    //队尾
    ; k) U5 h; v1 N; p0 U! E2 `    private int rear;$ A/ q- z7 W" d4 @

    : M1 \, q( e' r# F$ p* q( C9 b    private int defaultSize = 16;" t' a3 t/ g1 g4 V# o- E

    8 g) r# ?7 y# C. c* ^$ s# q    private int maxSize;- h1 j. d+ V+ q1 ~) l/ l2 n; r
    + I7 I5 d# w' T. w5 m5 F
        QueueImpl() {
      i! S: A5 `1 D        element = new Object[defaultSize];
    4 F5 E/ }9 d% R8 {5 {: Z$ O        maxSize = defaultSize;" ?  d( w* U1 G# o  P
            front = 0;; b) U  Z9 a) J
            rear = -1;4 i1 j  i& h: l  V
        }
    1 e+ G2 n/ s: U) {
      z* a3 T7 ~$ R  s! @3 Q/ A    QueueImpl(int size) {" ?. H9 f5 ]# M) ?
            element = new Object[size];
    2 C& w" F4 ]  m        maxSize = size;. o" {8 [9 M1 ?. ]: A3 H, u
            front = 0;
    4 a9 y. X' ]+ |2 j, B        rear = -1;+ C8 f: j' ^9 W2 _
        }% ]( p; @: b' N4 Z) [+ L( z& ^

    ! @9 h- G1 B4 x! N    @Override
    ( l+ I. L- [! f; V    public int getMaxSize() {
    - E; |) n  F5 F, _. i0 |! e$ u: g        return maxSize;
    2 m/ m4 W: A0 u' B# X) H7 k$ B+ P( }7 P    }6 G3 y' `! {9 _  t/ O# U

    9 m5 ~+ D- T( p5 ~* P7 n  t    @Override9 z8 f7 e2 a) Y
        public void push(Object object) {. g  p# }- B3 A' X5 ]! q6 W$ e
            //如果元素个数已经达到数组的最大个数,则进行扩容
    ; {$ e; J9 u  k1 H& R$ e1 T- N        if (elementCount == maxSize) {  Y! B" O3 G* R# r
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    - \' b! h7 ^* Q, N# K+ d        }
    - M& T1 e, {1 H; R, J        element[++rear] = object;
    / T# x8 O- e: [+ P        if (rear == element.length) {+ Z7 }+ g5 w% @1 M% w- m
                rear = -1;& B5 M: u& f/ z! i; _" k" j" Z
            }
      n( w9 c0 {. v        elementCount++;+ ~! R- S) }2 g! p% T( T9 u" s
        }1 M, ~! j0 i; {( b& Q
    2 x! F7 j( X. P" v+ e* N- |5 s
        @Override
    ' c2 ~1 M, ?# d* s    public Object pull() {
    4 [: |2 y1 H1 T3 L0 H        if (elementCount == 0) {0 [: ]( E9 Q, @8 p
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    ; c; g7 p; T0 h  Z0 {# P        }* C' l4 X0 L9 _
            Object object = element[front];' y* q4 u6 _8 W( J0 ]# N
            element[front] = null;: V+ v+ W0 a# k$ N* Z
            front++;
    2 _& W  M' ]2 e        elementCount--;
    $ E6 P% {! G6 p# d: m! `" ?        //队列清空,队头队尾恢复初始值& J* |% g) [* a" {# T' h
            if (elementCount == 0) {
    " K8 k* i% x0 ~            front = 0;
    * D) d( u. a$ S! _9 H/ M* ^, f            rear = -1;, c. @, |2 U- q# K( c2 \
            }
      V5 _: J/ i1 b% o' |8 t        return object;/ _3 F# Q+ S$ [/ R5 `
        }
    ; _, V; G; E; D, D. A5 L4 q# @2 \# E
    / v/ Y2 O3 @, w    @Override; \7 B6 z/ u- P" M. a
        public int getElementCount() {- X* j+ e3 C5 _( }" a8 r
            return elementCount;/ O- O+ L! ]1 t% u6 K2 n* A
        }& q* `5 U$ A' u; f  a" ?9 o
    9 k, l/ P$ T5 e) |! A" t
        @Override3 e" n  U& K; x2 H
        public Object getFront() {' h4 g8 O6 @: @" t' }) A' o) i! k
            if (elementCount == 0) {* O: t5 s: q4 t2 s& N
                System.out.print("队头无元素");# ~0 y& B, T4 n" X
                return null;
    & e7 |! D3 S9 R( x. Y3 T        }
    # U( I( x" G3 d, p        return element[front];
    : U& i6 y) @! J$ }9 e5 \8 e" f3 ~) A    }
    & m! K; z# T0 b6 O
    # D2 X7 Z! o5 K/ ~$ o7 l; Y  L, I    @Override) }- b+ @0 `- f; E6 I% `
        public Object getRear() {
    + d6 y. {* Q: N) G# {% f# o        if (elementCount == 0) {
    + f% _2 _2 y: r5 \5 y- p            System.out.print("队尾无元素");
    , C) i+ W# [- ^# B/ N( E& U1 l            return null;5 x, a) N) H+ N: Y, @2 n
            }' M4 T. ]! n/ N) x
            return element[rear];9 N4 D, W8 b  g8 }% G
        }
    ; w+ U& ^1 g: z, V4 A: O  ?1 }% g0 I, A
        @Override. ?7 N6 K) m+ M7 b! k0 \# d
        public void traverse() {6 H1 C9 {' L$ K
            if (elementCount == 0) {$ {3 h0 l. Z2 S' k/ v
                return;
    & {* F& v5 _0 R3 u        }
    9 _: C& M& p: }3 x. L( A* P        for (int i = front; i <= rear; i++) {& z$ R. {* Q% {7 v' ^
                System.out.print(element + ",");! ]; T4 T3 x8 `, D" F' k
            }1 \" H* M9 T/ Q4 [' o  ^
            System.out.println();
    & u* G! X8 I8 }) Q9 y2 F4 O! w0 P( @    }, E7 W: Q8 D4 W6 c4 d6 _8 s4 {
    }
    ; F( [5 J+ a) J+ w! R5 B7 w3 W$ V; Y% r/ O1 P' e
    ( K! V3 ?7 _3 @$ u3 c
    3、队列的测试
    " n) J/ k( J; k; i' `) j: k& tpublic class QueueTest {
    7 E9 ~2 P3 z' D; b; r& Y    public static void main(String[] args) {
    . r! ~) J0 u; ^# D        Queue queue = new QueueImpl();
    ( q4 P8 E7 Q8 {6 z
    * O# |# B& t7 T; \7 c        //获取队列大小) n( O( P' ]7 o6 k: a2 p0 |
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());7 z! o3 ]) z1 V

    - z& U. [% a* W2 n3 R. U        //第一次入队列:压入1-151 A, b# |& u' O' Z* d
            for (int i = 0; i < 16; i++) {; p& R/ G  }& n& N
                queue.push(i);6 R! P% v8 n; x3 w2 ~! A: {
            }
    + \+ F, y" C' g: W1 n        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());! L* ]' b/ G3 ~1 y1 j
            queue.traverse();
    6 Z, ~- A2 w# I: o& H$ @8 v        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    $ |# \5 V( i# p) d2 Z# h
    ' K. ~7 n, ^6 W/ m) l; y        //第一次出队:取出0-15
    - Z* W8 q; M2 L7 o        for (int i = 0; i < 16; i++) {. ?0 k" X0 M4 D7 S+ C' n3 d% S
                queue.pull();- b/ l0 b& l8 g
            }% ]# e2 A) Z3 l& E; I2 s1 c$ E- A
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    $ Y' U/ o) L& l5 b) G        queue.traverse();, [2 @3 p2 ^# P+ j) q7 ~
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
      ], \  |( u* p. o6 _
    - w# o  d% y" j6 d* T) X
    7 `! n3 K6 }5 J! Q' ?9 ?( i        //第二次入队列:压入16,314 T+ Z, g. r) M7 }# X: `. R. L
            for (int i = 16; i < 32; i++) {" V1 |! x9 h7 Q* [7 R% b: i$ z
                queue.push(i);/ l0 k+ k% [0 I! b
            }
    1 b" m4 n- x- i* ^4 `0 @        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    0 x' j+ v- b9 S4 T+ P& }. B        queue.traverse();
    & h$ `8 s; g+ k# _: p6 [
    5 L" J( ?1 A  W. `% |* _) Z8 J
    5 t) }( B5 o% L# u+ t: B, M2 R        //第二次出队:取出16-31
    ( Z8 v$ }' M) \$ e8 o( Y- d2 G        for (int i = 0; i < 16; i++) {) U4 _6 E1 ]6 D0 _3 O8 Y
                queue.pull();
    5 U% b6 t6 [/ l1 P3 ?' x        }+ s, Q' l/ {4 m
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    / t9 J5 A- W# ^' Y; d  d        queue.traverse();% n. R0 Y! x( R; P
    6 G: I) i- Y5 Y6 A
            //空队列出队报错1 ^1 q; k8 R9 z3 \* {
            queue.pull();0 J- y$ V. C" P6 b

    # t' w( Q* C. n) J, \7 @( D$ z    }
    " q: }8 \) l' [) z+ R) a}
      f. c# z7 f0 y/ s8 T: q8 K" E! i1 H  y/ C$ X8 w: i9 B
    $ v9 H1 a- x- z5 h+ j6 S2 G

    % X2 A5 v0 R. M, k1 D9 x* @
    . f, t2 J' y  Z! ~+ {: D" x! V7 V2 Q. j
    . M; k4 ~8 V8 O8 ]7 ~; `% M

    9 w; ]; D( s& J- k# q( I* b, H
    4 N1 Y2 y9 j/ u/ c$ S
    ! _0 g7 |0 C( j3 v* H" G5 f6 b: o
    & M% i7 G5 ]+ m3 E3 J
    " n6 Y& s0 Z: o) h/ P3 ?1 ?- g  o' u2 T5 T! j" J
    ( w1 d/ l9 v- O) I) z+ _

    ( v: B7 ]  G  y4 ?2 p% n: e
    # K2 m9 o& s- o! o: P; U————————————————+ q$ v2 H- t! S
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* l% H! W) `' Z/ d' A. }
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    ( `$ K/ F9 {9 Q  Q& h1 K7 z( c9 e/ Y. C

    1 W8 Q$ A" @$ u" d2 W' h* t* e, x
    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 05:07 , Processed in 0.435340 second(s), 54 queries .

    回顶部