QQ登录

只需要一步,快速开始

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

    . l2 t2 D6 D$ c6 P' [数据结构——栈(Stack)与队列(Queue)的手写实例# {) O4 y" a5 ]& {; u! {# |
    " L7 {) b: g7 k! w
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      + P: @& z# U4 K. W& D# s: m$ k
      • 一、 栈与队列的定义
      • 二、 用数组实现栈7 a2 {+ i# B9 g6 |$ S( `" ~. p7 L9 Z
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          0 H! |# J+ l, c6 c+ _3 M
      • 三、 用数组实现队列9 F# ]: M1 _) i8 w- O! \
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试# m5 Z: I' A3 [6 C0 p% w; n, c

    5 ]( y* \* a2 Y* _2 p
    ! ?7 R2 A) u( l, I- U2 u- R一、 栈与队列的定义
    ( V# x9 k; P) H) a栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    9 M9 K' F: x: e( R& I4 [0 t7 U 1.png
    . Q' ?% M4 y5 n# \) o 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    , }# S9 D1 S5 s( i9 h3 R 2.png + }$ q! x3 w5 P3 t! M$ D7 |2 p3 {

    - a( T4 j3 M4 w% `( {
    : R' W9 B1 A9 U二、 用数组实现栈1、栈的接口定义
    # z2 i* X4 Z6 e4 j+ V/**
    - J/ R% d! X: R8 u) w * 定义栈的接口! n" M1 V  ]. d  n2 p3 p
    *
    " ?. L5 ?- R$ m* W+ t) @ * @Author zhuhuix
    ) s  q' O& c" ?8 G# X( U& c * @date 2020-05-01
    : W, t4 u$ @, _2 p */0 e7 T5 T/ H  j6 m! `+ \
    public interface Stack {
    $ Y/ K! b1 d$ c& `    /**) `* a/ Y4 h$ [) I
         * 入栈
    ' x+ y; A8 E9 h1 Y. q. S     * @param object 入栈元素7 Q' [9 `. F6 B
         */0 ]% ?9 t- r, X% [* m( B9 e
        void push(Object object);2 H5 X  p% N4 t' Q% k* A9 S& W
    0 E& E3 A, N3 S
        /**
    2 C" I6 Y* C- x$ }  V/ e     * 出栈7 K; h5 g$ O& l" k3 i' U
         * @return 出栈元素( x; T* r+ `+ H$ ^
         */
      O+ j7 C" x7 `. X    Object pop();- {" u7 R" h# S5 p
    ! a7 h* i4 O1 E2 X1 `+ ?
        /**
    - z' }6 ~. k- N/ _' @     *  获取元素个数3 k, m) i2 d1 f, G& Z4 R* S
         * @return 元素个数1 G# i2 o& c( H0 R4 T
         */
    ) {$ \4 o, D5 @0 D    int getElementCount();
    # G6 x+ `0 B, i* j
    3 @0 Y/ m- j& O+ ~. v    /**
    ; e' H+ V* p! b' Q7 K; b  \  Y     * 遍历栈的元素9 G" M% W6 d$ ?! g! C/ Q3 H/ ~
         */
    * m2 A2 M# L5 ^7 e( k9 M    void traverse();
    % {/ `) g( w5 j7 G0 A
    7 \9 F$ ~- p. z! O* g( K$ D- A}
    " K! {9 f) f2 N4 R2、栈的接口实现
    # n3 i1 R$ c9 k3 R/ z5 q/**  B" H1 A" Y# F
    * 栈的接口实现, `; u, [3 \, e1 i# k! ~
    *4 W: R" z/ r! u- E; I: N1 y
    * @author zhuhuix) H1 D2 K( t; A
    * @date 2020-05-018 L9 I! A  U( ~/ p$ E, I. R
    */& t3 T' I, }; [
    public class StackImpl implements Stack {7 [! [% G, s: ]: h
           
    4 p) Y/ M- q$ i. `, E' [    protected Object[] element;
    ' A2 x7 W4 @- v- D0 s
    ' g$ ?; A0 c8 X- N9 U    protected int elementCount;
    0 B" ^) D- ~+ T9 H* H0 U" d8 L5 r/ w
        private int defaultSize = 16;
    % _1 E5 {# O% G. J
    ; V* s/ c; c9 G. q    private int maxSize;
    8 ]2 f5 t2 L( P; B/ _2 i) Z. ]9 ]! B
        StackImpl() {
    9 q# S0 i5 q" [        element = new Object[defaultSize];
    4 D: G! Z: y7 E2 f3 I        maxSize = defaultSize;
    " x8 j) I) j2 K/ U    }  l% k$ x1 W0 Y! ^

    : y& K4 W0 O' K: F6 O$ h    StackImpl(int size) {: x3 i# f: e4 q. w$ y! x! U  X
            element = new Object[size];
    0 x; J1 Y  B/ F* y) @7 C  s! B5 |        maxSize = size;3 G, g; U; O9 f9 V& r% z( b
        }+ R) a8 N1 p) [" _" K% A0 M. a
    : f7 g3 W* m2 f/ T5 T: Y) S% ~) J
        @Override; U+ B6 M; |- f9 M& Q8 Z
        public void push(Object object) {
    ! n9 T8 a: U8 Z6 F        //如果元素个数已经达到数组的最大个数,则进行扩容
    # L# u: G5 d* `+ m% N        if (elementCount == maxSize) {
    6 X4 K5 b7 M9 x) C& |6 n0 v            element = Arrays.copyOf(element, elementCount + defaultSize);
    ' x2 O% A, a* t% g- u' }        }, p; {6 ]7 D3 ~8 n9 |4 d! @3 `6 m" S
            element[elementCount++] = object;. j. `" h1 c% z( _# `$ [

    8 U; X% F& U# k- D4 N8 u8 f    }' t! X: `$ K5 L% E* M
            // 本代码未实现数组的自动缩小,具体方法可参考JDK1 C2 x- M0 N$ Z! R4 d1 E
        @Override7 ~: h( R5 S7 \+ a* c- g
        public Object pop() {9 ]/ _8 s; k3 h1 A$ S7 w
            if (elementCount == 0) {
    " [. T8 K! \# h! S; F7 m+ k" M            throw new ArrayIndexOutOfBoundsException("栈中无元素");' T1 E, |3 ]2 l' R! D  d. E
            }8 C: e( v7 g7 b- M; O! h
            Object object = element[--elementCount];3 a: n/ A8 |) Y9 t
            element[elementCount] = null;4 B( s& [) o% F% w+ }' A6 \
            return object;/ z! A5 e6 ]& S! \6 j* E
        }
    8 v- k9 O) e% b. A: q- x& O' y7 i6 i; j5 D
        @Override" R+ I9 U/ [1 |5 G! P; r/ C
        public int getElementCount() {
    ; h% a9 z( u0 u' C, l9 V        return elementCount;
    & h& w8 p  U, M* s* h' T( o    }/ k, l8 p; Q7 T- N# {: k

    " Q5 s, K. ]9 Y( J8 X    @Override
    ' R( _+ D8 }8 j7 o+ S$ Q    public void traverse() {& n" f, U4 z* @, G: [& e* X
            for (int i = 0; i < elementCount; i++) {
    . j2 T$ k6 \$ d            System.out.print(element + ",");
    $ P9 n9 D: D8 e1 K+ H% F; \) e        }
    + {3 R& G) [1 R7 X5 v        System.out.println();% ?5 u; p* Y/ a; v* B+ I4 a- O, {: P2 N
        }
    ; U8 k6 f. g2 K& d$ V5 J& W}
    9 {1 j- P8 \3 ]1 I3、栈的测试. t: {) c& A1 d. M8 S
    public class StackTest {9 }/ |' C& z# B. A. d, C
        public static void main(String[] args) {, F6 @( l. \8 x5 R
            Stack stack = new StackImpl();
    6 b" G1 K, n/ O8 T! U
    / B) G3 t# W3 {3 W# e; O        //第一次入栈:压入1-15
    0 y- h; ~' N* B5 N# R        for (int i = 0; i < 16; i++) {
    * c- U" v, C; H. ]- I            stack.push(i);3 f- {! t5 A( N$ X1 E8 Z% `4 `
            }1 L' Y, N( ^) C0 A9 E- y
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());8 F* e, Y! P) x
            stack.traverse();
    3 X! f$ {- L, v+ q, N
    3 ^' t" B6 K3 V( _  w: J        //第二次入栈:压入16-31
    8 c! l2 K. G+ k( P7 K" Q        for (int i = 16; i < 32; i++) {% j% K6 `/ W" T$ P8 l  t
                stack.push(i);1 E7 x) S  G2 q  Y9 \1 P  Z7 }
            }6 O  R1 A% |5 K9 B- n( F- t3 ~$ V3 g
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());" i' {# ~8 \% G# M9 J2 K
            stack.traverse();# x0 R  h$ V! c6 ^; V/ _
    & o0 d- U9 E4 ]1 Y6 D: t$ s# f
            //第一次出栈:取出31-16
    # [% N; V) t* F2 B        for (int i = 0; i < 16; i++) {5 K$ _! m! b! |5 y  }( V3 C' X1 ^  B
                stack.pop();' a& Y# B+ o" h4 A! Z1 g' G5 w
            }0 ~# R" H) H) Y5 q# B$ u
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    , G1 m# U1 c. V, Y        stack.traverse();: \( N9 \  K* i4 ^" R* N4 n

    % x5 e: ~( d- H& n; J( U- t1 L        //第二次出栈:取出15-0" J( X& R/ A8 m. f$ i% N1 Z
            for (int i = 0; i < 16; i++) {+ B0 x4 V$ q/ G6 u0 Z, X  b9 ?
                stack.pop();3 Y4 ^6 [) E) w$ P: v2 S
            }) s6 j; F5 Q- |) |6 E
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());7 y  a; ]( _9 Q5 \6 }
            stack.traverse();
    " y% e) g' A( T) h, M. _. ?6 d' a
    ( n8 Q, q# d4 Y2 p        //栈中无元素,出栈报错
    4 `9 o% `% }) k# U1 Z2 w' O9 L        stack.pop();
    " y) @+ p" T0 _1 ?6 K
    / @% I* n& d& V! T    }
    5 q2 A3 ?! I  i$ Z8 l6 d}
    * a! ]) W( B) n9 V: t* \+ v( K& m 3.png
    2 y6 |- P# Y% |. g5 Y. N, d1 i5 s. Q' S" I
    , b  o- A$ Q6 F1 v; `! G: ^0 X

    ) W. C9 z% H7 B三、 用数组实现队列1、队列的接口定义5 A. `7 q, |2 L4 C# j3 g. j
    /**
    , [, v: C/ \7 n; ? * 定义队列的接口, A# S: q0 }7 r7 E. m6 H5 b
    *- n0 b; ]; O9 v7 i
    * @author zhuhuix; _8 \' s6 o2 @, P
    * @date 2020-05-01
    6 _( M- l& W4 W2 ` */% Z3 f, F5 F) j$ X) d- O* d
    public interface Queue {; v$ e* b. D# n6 Q& o4 a& P* @3 p

    7 k! R2 Z2 R5 M8 e    /*** T/ Q+ C/ w6 z8 }! K, |  c  l% q: T/ c% S
         * 获取队列大小
    , O3 a' _# p2 l3 s5 U, w, B* v0 u     * @return 队列大小- x3 `" P( W% Q
         */
    6 C: @" h) T  e' j6 A+ Y  j3 f1 |    int getMaxSize();5 P4 b/ A% t; D" G. L1 u
    0 s7 Q8 d+ i! n: V3 P& u
        /**  ^2 u  C) J7 U5 l
         * 入队
    , E+ @/ ^: _( _" `" [0 y     * @param object 入队元素) L/ F8 I# Z- r
         */% b$ P, G: H' k; U" h0 d9 F- Q
        void push(Object object);9 j3 m7 F) Q/ f- O# }6 h7 n8 G
    4 Z2 x+ k- D1 O4 A% s( L$ c
        /**
    5 T7 m* O2 U& S3 t     * 出队# b. E1 M% r* ]) g4 D" ^% A3 @
         * @return 出栈元素" i3 m( r3 B# x, q
         */% [9 W) _, F  E3 m. F
        Object pull();
    ' O6 E* V& D9 [/ T/ n# B* o  P. d9 h# [& c
        /**! w+ p/ t  i( E4 l7 F& a
         *  获取元素个数9 \' J: p: x) q# S
         * @return 元素个数2 I" v1 U$ Z4 q* M$ k
         */9 I( G0 Q6 w% g
        int getElementCount();
    & Q, g, j# y' C! D! O1 \: s0 b4 s4 {9 D! E  u* I
        /**
    ; n1 N+ x4 v0 T) [% m; k     *  获取队头元素2 _* N. u3 V2 m  b2 ~9 h/ f
         * @return 队头元素$ |. J" X4 O' H' }
         */3 v: i' j- ^' X. f9 `3 U
        Object getFront();. O) Q( Q" A# C

    8 `* ?& s$ P+ f; @+ S, D    /**$ u, i4 x$ h' S/ m* u. c" c3 ^
         *  获取队尾元素) h1 o0 S5 \. }
         * @return 队尾元素: a$ o! x- ]  _  M
         */- \1 y3 C- x- o$ ~5 {8 D7 }
        Object getRear();
    $ _: H9 {) S; M6 \! z6 a( F( j9 Z; f; {
        /**+ K% q+ i$ _$ a+ L5 G6 R
         * 遍历队列的元素
    7 H0 @) X  C! G9 s     */
    * L) V; n9 [/ k* l8 d' m5 W1 k    void traverse();
    0 L1 T# i1 M* Q1 M9 m; _}/ k* g4 ~- m" ?" f' z+ J- b9 y5 ^
    2、队列的接口实现$ a: {/ l6 e: j8 F) d) }% V2 S, U. _
    /**- M+ t* d6 Y7 J( F& {# F
    * 队列的接口实现
    / q; V; e( ^9 H& k+ X; V *
    1 K) p1 }4 K7 ]( p' b. c+ x' ] * @author zhuhuix
    0 X3 s% \" d% `5 ]1 |% \) d" e * @date 2020-05-01
    " F3 l5 z  ^& d9 Y$ Z1 C */
    . c! x& L/ t" Ppublic class QueueImpl implements Queue {5 e; e* E% d1 |  |: T3 @

    2 U5 X4 P% _/ x2 e    protected Object[] element;
    0 _, z6 k7 c9 m9 X* [7 y
    , B( h' j" u" H8 K: t0 _    protected int elementCount;
    ; Q& N/ S: W6 N& u1 H6 w1 M7 H! ^- v6 k, {
        //队头
    ( }. l( d: o* C    private int front;2 z5 G' J4 l/ `
    * k7 H, V: d. b9 W5 n8 f( h
        //队尾; n& z  J% d) o8 z' G
        private int rear;: R0 c: z' U; B! o0 b% r

    " _4 @. j8 f* c    private int defaultSize = 16;" [, z, Q7 s4 g

      z4 S/ W# Q  [5 p* o    private int maxSize;
    3 A( L" E( h4 I/ g8 c% W) E3 e2 B' @
        QueueImpl() {# O" R% ~! P. w6 P$ K0 L4 @
            element = new Object[defaultSize];. m" T0 x7 |2 C5 s2 S* i7 S6 {
            maxSize = defaultSize;, d' Q1 ]: \  A: s
            front = 0;. Q% v% V- T% {  l) `
            rear = -1;# Q! U  Y; Y  Z4 d' f6 J
        }
    8 E6 v% V1 }$ ^7 G% P( J' @) B! h
        QueueImpl(int size) {
    ( ]. C) s/ W9 }8 u        element = new Object[size];
    . A2 ?% J: C/ u9 R; Z" O- o# V        maxSize = size;
    4 w$ s* X* O# ~# X        front = 0;
    9 `9 b) h" Y  W: z; W        rear = -1;
    2 ?5 M  P" _# {& b2 s! m    }! ~! F% h0 M2 \

    ! n3 o1 u+ _- f, h" C  v& M    @Override
    " u9 D# J/ Y, ~; u& ?5 Q$ b    public int getMaxSize() {- K1 ~3 h3 |# X# a/ s5 C
            return maxSize;+ }0 U! o$ o7 L$ C0 ?# |
        }4 q* p9 q' r' J7 ]! ?
    4 j+ R3 z1 x& a: S% t" Y
        @Override8 ~* B% P( b; k! B
        public void push(Object object) {) }0 R/ S9 j& m% R6 G5 r/ f
            //如果元素个数已经达到数组的最大个数,则进行扩容
      T& H( v" ]1 X, r6 G        if (elementCount == maxSize) {
    5 {+ k% \: A' G            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");5 L+ y1 s: _  m/ ~
            }3 [! m3 f6 m& Z; ~% O, I
            element[++rear] = object;0 Z% Z, x5 f9 {+ m& `/ s) i* e& Q7 D
            if (rear == element.length) {" S0 K* h  ^- j
                rear = -1;7 b4 \% F! Z9 p7 L
            }
    ; C3 k# q7 j# v( f/ M3 ~) y        elementCount++;2 o# H, _; W( B: I
        }
      Z; H) q* Q8 k- q$ P7 _" |5 Y
    : Y: \: Q) z% t6 `5 l/ M6 f* @6 W    @Override
    9 e. k8 j- S) h% d; V' D6 v    public Object pull() {% t9 x4 f' d) [" a1 d6 I( @: m
            if (elementCount == 0) {
    . u9 e# K# Y# K            throw new ArrayIndexOutOfBoundsException("队列中无元素");7 L0 t% z: @" e: v0 [; _" y- x
            }+ _/ j2 T( ~* t8 x5 n) \- i, U
            Object object = element[front];
    8 s* c! U5 s& B& @6 {8 ~1 W2 h        element[front] = null;; S0 W5 m  `& P, |  n; ]
            front++;
    8 O( w" H/ |: H, S7 ^8 \/ D* k2 j        elementCount--;
    $ \. W8 G$ \+ S8 r        //队列清空,队头队尾恢复初始值2 X( J" T4 E5 G6 w! S; t
            if (elementCount == 0) {
    1 b7 u7 h5 V8 ?3 a) d            front = 0;
    7 g) P0 Q4 _6 y% n7 u# J5 f" i            rear = -1;
    - ]. w+ G. J$ z, w% o4 a' e, h4 F8 H        }% j5 i1 ]6 E4 {. S9 ?
            return object;1 ~- f( x6 m2 t, j0 R3 k; g
        }( u5 p, i" G9 E+ E
    4 e) G9 y) J+ f6 y) G
        @Override1 K+ A. `2 h* O
        public int getElementCount() {. ?) T( n+ N4 |' B( i
            return elementCount;
    % ?0 a+ T" n7 B3 I    }- k; d4 e5 X( D! n; s

    5 F5 t) o; `( F) r4 J    @Override% K0 [  N4 y3 Y/ R2 j, a
        public Object getFront() {
    3 J( N+ t$ N+ ]! q/ x3 r        if (elementCount == 0) {
    % j* M, a* A; E0 q" B            System.out.print("队头无元素");
    ) d2 [. j' ~0 L' }0 q! ]) s            return null;6 ?; x) p0 h8 K4 J" W6 P
            }% [# D7 k3 d  c! z: L+ Q
            return element[front];
    6 W# M/ w/ C. P    }9 K3 e5 u4 q# H( b
    ; J% {* f6 B  R4 @3 l! T' ?% |% T
        @Override
    ! O- @- X+ g( `* m$ M2 q2 s    public Object getRear() {9 m0 M# S: z. {7 R- n; B
            if (elementCount == 0) {; _# ?! d" r! |8 a
                System.out.print("队尾无元素");: [1 c5 T: N' a
                return null;( n2 Q5 H9 z0 E8 l' F8 U+ ], h
            }# U7 k- j6 j! I# I; v1 L& K% H- a
            return element[rear];
    9 h/ y! Z6 [- f$ S  `7 A) H    }
    3 G3 [# E; c) ]# U. h, [/ Q) L3 O2 v  f
        @Override
    $ k1 L) T/ f, E& W5 n% q    public void traverse() {
    5 a. I1 s6 |( `1 |, e/ I        if (elementCount == 0) {
    2 U7 f: t, {& T, _$ O5 G6 J) z            return;* T; n$ l* h; G
            }" i& N" b5 f7 v- E# u
            for (int i = front; i <= rear; i++) {
    # V; h/ M6 F6 w; F  O3 d! m            System.out.print(element + ",");
    ; e7 v# H3 ]3 X3 ?        }
    + [# {* M2 e8 J" u* h0 a) \2 y, i        System.out.println();
    / Q! r" W( R  H# B- s, g2 v    }3 Q: o% l0 ~8 N6 S
    }. h6 G9 p; f, S5 c& I  ^
    ' A9 C' ~1 U3 k( A

    0 {" c% p7 t0 R, p; \5 L$ T' ?3、队列的测试
    5 M7 T  q% C: {public class QueueTest {
    ' S5 B8 l) g' ?    public static void main(String[] args) {6 _' j' _3 y/ y4 _3 ?7 ^7 {
            Queue queue = new QueueImpl();" d& l* D% ~( E9 R& X% Q
    " A7 n8 T8 U/ ~9 g: d
            //获取队列大小
    , d2 Q* T% H* w6 ~+ q        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());# H- @0 j. Z- w; x
    0 r+ W" \. v$ K: U: ~. }  j
            //第一次入队列:压入1-15
    8 S* g" u9 r0 G$ m        for (int i = 0; i < 16; i++) {7 I+ v( Q+ C- [5 N
                queue.push(i);
    / [  D3 @2 `" K9 |" o        }
    . _7 m0 J9 E! R9 _# b& w        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    0 N7 `: H, z" t' W        queue.traverse();
    7 ]* @' u9 N  [& H" t" @        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    + Y0 h9 Z* v7 i) E5 Q
    * \6 d. |- j( }5 m! u! I        //第一次出队:取出0-15
    : O9 g9 v. ?3 h" @& P        for (int i = 0; i < 16; i++) {( g% X/ a! t+ V5 G/ _8 ?
                queue.pull();' L6 V- t. A8 A9 j8 E
            }9 o# V. P/ [. s! D- n( D6 `$ s& Y# n
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    . s2 p6 b( v0 m. l# y( E        queue.traverse();2 B( |/ }7 Z8 U  W, t; G( R& s
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());" ]# j+ Z+ t; a9 m

    % B7 {1 k8 f  e/ ]: G
    2 L7 |3 h- m% u2 i  ]        //第二次入队列:压入16,31
    + @# Z, A6 Y8 V: o9 |  O" {        for (int i = 16; i < 32; i++) {/ i+ n! K1 W1 @! `# t
                queue.push(i);
    7 a/ X4 V! I# |  T) T        }5 ~. U! F- e$ w- s
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());, \. W- P* @% Q5 z1 M* R& C% Y
            queue.traverse();
    & }$ n. r( I- T# \
    " F& h$ v0 p# m1 `3 b. n" ]; K. h/ f5 v  K0 z8 X3 }5 M
            //第二次出队:取出16-31' A/ f% g& s: D
            for (int i = 0; i < 16; i++) {# p. m- X; K8 o6 ~
                queue.pull();
    ; t, @' A% d2 a/ x2 U  u6 E        }3 n! j. X. p& A4 Z; ~! ~
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    3 K3 j- Z4 c+ H! I/ i        queue.traverse();. S- `1 K5 I8 U/ [3 B

    7 n, ~6 z7 _! Z( p, Y        //空队列出队报错1 [8 i( ^8 K0 L$ B; m
            queue.pull();
    3 P! p  n1 F. |& N* W
    , P5 g/ i) q' h4 ?" q. \9 n) F    }! V% q7 D- L, s; U; z8 c! l) A! v
    }
    / G" P: v: x, Z  J! N" D- p' z! t1 S" O8 k0 o
    # v3 m# ^- Y2 x+ _
    / r+ n. U% E) `* {9 O/ Q

      W  B. v, \1 U( Q' g" Y/ ]1 Q; @2 c6 Y5 s

    : e; ~$ S+ {/ c& r/ P8 q3 I, x# K# d( m* I: ^# r: k+ ^

    2 h1 |/ J  o/ s$ B8 m- e1 \" q  x1 \: x, U) {) U; L* X
    ) y* V' [2 X! C9 c
    ) X" ?: l. Y2 q0 H/ w/ a/ M
    : d3 B1 ?: e1 h! w) W+ s

    9 e) H/ P; P, ~# R) d+ W
    6 o  b( r" z1 E  `
    8 d9 e/ E/ w0 B! C————————————————$ y9 \5 e3 r4 u3 r0 d
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    5 r# g; o% Z4 V2 g. v5 u, a原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785/ H" d' P! r8 a- H+ o6 D9 \
    ) _- j; |9 U3 L

    ) n+ @- a" A0 J" \& E: b
    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-7-29 03:11 , Processed in 0.534789 second(s), 53 queries .

    回顶部