QQ登录

只需要一步,快速开始

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

    % u$ {  L, \' A, O& W! \9 t/ M% y数据结构——栈(Stack)与队列(Queue)的手写实例* ]/ r7 \/ h* P

    1 z2 T1 o) w- I, d. f[color=rgba(0, 0, 0, 0.74902)]文章目录
      ; z1 p9 A# n- S
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        ' a2 J. L- x1 m0 a5 ~! U3 v4 d
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试" l* L- ~! ~& I- @& b
      • 三、 用数组实现队列
        : H3 `) {# f1 Z3 t: Q& x
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试3 ^' `: o, p1 r9 x

      X1 s$ R/ u& G( v" \, x# t7 {
    7 C8 D/ i! N+ o0 M一、 栈与队列的定义
    + x- C" Z8 A0 v4 Y4 ]栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。8 P! z7 E: ?6 b4 @; p, p
    1.png 5 X) M( `6 N% h- Q, ?
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。" S# ?. K! @- Q( r
    2.png
    2 C" j$ w- e/ N" ]! x* U2 n* M3 y. R1 m0 V8 K+ S6 Q

    1 g5 b' G" n: p9 Q二、 用数组实现栈1、栈的接口定义% \, L9 ]/ W! ^* c
    /**
    7 g, e+ _# M- B( \5 {9 i/ G * 定义栈的接口. w7 I9 B( ]- j& [' o8 ~
    *
    0 V2 I7 s( \# r * @Author zhuhuix
    4 G* P+ U* s5 _" E * @date 2020-05-01
    # [; c' K, \8 E2 D1 t9 ~ */0 C5 i2 i, u0 [' ~" B9 P
    public interface Stack {
    . B( `( z, Q1 n2 u4 Z    /**
    % z+ j9 A% s# ]& h7 p% v  X& ]8 v, w     * 入栈
    * _& x2 _) I8 \' C" l     * @param object 入栈元素# W$ K" F4 e6 |$ a4 V4 q+ ^. `, Y
         */0 Q5 U% [: W0 s& Q
        void push(Object object);' o6 Z, F; X! D) D8 ?, D  ?! `9 R4 P

    5 {6 ]+ S9 f6 y2 |; ^; N    /**( s+ }  F8 P* w% k1 Y
         * 出栈
    . T8 [: u! o; W* I+ V& m9 ~" g     * @return 出栈元素& h! \) }" C* ~3 C# ]
         */' ~2 Y, w1 O3 D8 S% k6 P
        Object pop();
    / w  Z" W  g4 i* M9 o& u. G$ N4 w/ b9 o. B, y) ~, x: c
        /**1 }* y& K7 x2 ^. v! S% S
         *  获取元素个数
    5 D: w& y% r1 N+ Y     * @return 元素个数. N( _9 C! z; E, c* U+ Z5 E3 c1 B
         */
      w$ a& r% h6 c2 Z6 }    int getElementCount();5 Z* a# v  r  w5 w( ~# Q8 s

    4 m# G' c, U( c- Q    /**
    ! B/ ~7 C8 \. z- U' ]     * 遍历栈的元素6 e+ y( \& r$ r3 o# W. W
         */% W5 ~$ _3 W% y
        void traverse();4 O, R; m  v5 U- ?1 A0 r7 L- i2 V
    % K' H1 s) E. c1 H# g! L# i
    }
    ! `  n( J. ]6 _, p2、栈的接口实现) \( Y0 ?, z* T' @
    /**
    + A# }& e/ J0 |$ b. s * 栈的接口实现
    7 S4 t# H$ s& |! v. r *4 o+ W! J: m6 Z
    * @author zhuhuix% @$ Q, `- \, V0 I& k5 h1 X9 u0 J
    * @date 2020-05-01
    & X( k0 l1 j9 ]/ Y0 i */# h& r0 o9 V( }
    public class StackImpl implements Stack {
    : ^1 J; |/ L  ^% V5 _        ; t& @0 I' c8 c& l
        protected Object[] element;
    8 Z  e% f+ j; }# A
    2 m  ^9 ~' q, K$ c0 c8 B    protected int elementCount;$ B- o% \0 k. J# f0 R9 @* G' ?* j

    9 h! i( W8 Z8 U" F5 N    private int defaultSize = 16;) o6 x2 f; j0 s) R
    - z( }+ B9 x/ o3 N7 l, ?1 d
        private int maxSize;
    0 r1 Y. R  D' Q, \  ?* @- r
    # y8 L  o. w9 v6 I: p2 E5 r    StackImpl() {3 e% M- e* x7 t$ M2 u, O
            element = new Object[defaultSize];8 n6 }* n2 j  [( p) M$ Z
            maxSize = defaultSize;
    7 U$ e/ P) W* _+ Q- \2 q' k    }$ I+ g* x# n; ?5 H9 x* S
    / R- v- }1 l6 f7 y! T$ @
        StackImpl(int size) {$ m- L( d3 d' l, n8 m
            element = new Object[size];
    9 b0 [  h4 U, ]3 J; R6 i        maxSize = size;
    8 M" ^" z; a! Q7 ?% ~, r+ m    }
    7 z8 O% ~" i+ e- t" _  }) \* j
    4 v" `2 P" x% E* v' h" u    @Override$ f9 d% v2 e# F  B" f4 c' [
        public void push(Object object) {
    ' J* x) J4 g; n        //如果元素个数已经达到数组的最大个数,则进行扩容/ `: w. f' z* h& h0 W
            if (elementCount == maxSize) {! n7 b' |8 m4 W3 _& n) V
                element = Arrays.copyOf(element, elementCount + defaultSize);, i8 o/ U# l4 C
            }
    8 ^3 p; g: }8 ^4 x1 k        element[elementCount++] = object;
    9 K- T; m' U+ L5 a) ?, I% `
    # \9 R6 Z: r$ n    }
    0 @* f* `, @  i6 ]) C- |        // 本代码未实现数组的自动缩小,具体方法可参考JDK) m' J5 Y4 F& `
        @Override6 t, @) B, W1 C- W+ z2 a; ~
        public Object pop() {: E. r- _* {$ P% U
            if (elementCount == 0) {
    7 H& Q% w$ H* g8 j5 j            throw new ArrayIndexOutOfBoundsException("栈中无元素");, m& R2 D. @# d1 ~  v; ?! w
            }4 \2 p# \, o+ k9 g: p% L! a5 y* D
            Object object = element[--elementCount];
    ( F4 s% g" C: j$ H# r3 z        element[elementCount] = null;- V5 L' a4 B- @( p1 t& Q/ d
            return object;
    1 j" D. D6 Z$ D  N# t5 `    }7 p% @1 |; t) e

      g$ S- v4 i: o6 S$ \) F6 |' f    @Override- [! ~' t! a2 v! j; ?3 o/ g. z
        public int getElementCount() {! U$ b& p6 U; c5 {+ H& G3 r! c; t
            return elementCount;: ^; L6 [! F4 y* I( M9 i4 B
        }4 a6 @! a0 B& }! i6 _5 A( z, L

    4 v1 }$ U: J9 d; ^4 X' A0 V; g) k! f    @Override
    2 |: f+ }$ [/ E9 H" ?    public void traverse() {
    * e; i! ~4 x. P4 [        for (int i = 0; i < elementCount; i++) {
    7 u+ {+ [( I' U            System.out.print(element + ",");* q3 G- g  S; x
            }" H1 J$ Q( Y5 @. G( n5 p: h
            System.out.println();" o7 p8 n8 s9 R( N! b
        }3 r7 r. N0 y% \( o
    }
    * `6 t7 G# k; I1 u3、栈的测试9 v1 \$ ^+ j' l1 B3 U' u
    public class StackTest {$ Z/ n7 ~5 V& o6 i0 Y8 n0 _# g
        public static void main(String[] args) {
    ! w2 R$ d; J2 B: h7 g        Stack stack = new StackImpl();' E/ I* S% `8 d

    % \2 e% `- w9 i6 a        //第一次入栈:压入1-15% r2 J4 j! R3 ?2 ?5 X
            for (int i = 0; i < 16; i++) {) h1 b8 s. e! B# v
                stack.push(i);
    : t! @4 N6 O/ h" `0 b/ F5 x0 q+ L( k        }
    , J, L; {  _% x4 Y. L) @        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());7 ^( I& }+ [7 o" n
            stack.traverse();. }& o* ^! w0 L  X

    + f2 n, H7 l# V) @) U- Q        //第二次入栈:压入16-31
    , v# D2 n% z9 M' ~- e& _        for (int i = 16; i < 32; i++) {
    4 C. o8 m  e( E7 u; A$ Z* Q" X) \; b            stack.push(i);3 T) c- g4 c* R% c/ A! R
            }
    3 Y* K9 [2 p, W4 I        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());/ u4 _9 l2 j# G) X3 P! C
            stack.traverse();- i' A0 w$ C- |7 h6 W# g8 g

    1 g/ v, ?; O7 T        //第一次出栈:取出31-167 d) Z  O  S5 t5 ^. K: M' Y
            for (int i = 0; i < 16; i++) {3 k" J) y3 y2 H+ e8 t+ o+ r
                stack.pop();
    ! Y) V% R* T# S  f% W) x8 g. {        }8 A* |; m  D' [. X, I
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());( i" M% W! Q5 N1 U" R. M" [% p. p; Q
            stack.traverse();: v! g4 f) K. {7 X9 R1 {& A( }

    ( D& G2 v+ |. _: p        //第二次出栈:取出15-04 ^6 a* Y& Y2 o6 ?" V/ _* Y
            for (int i = 0; i < 16; i++) {
    & A2 g% y7 A# f            stack.pop();8 ]$ q: \0 E3 R7 G( Z! _5 M& c0 G6 s
            }# _0 X! J- y: x
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    ) O' _7 `+ e+ P3 k7 I4 p6 o        stack.traverse();
    ; }$ R% \) a' M# |6 y7 c
    ! Y5 D' O+ y% D$ Y        //栈中无元素,出栈报错7 A7 e, c: |' v1 C" U2 V' D. `4 y
            stack.pop();
    0 P- \% V/ T; m
    6 v. p* t# |0 g6 m0 X    }
    8 S* w0 i' e. B% [  ~* {: }4 g1 e}
    * ^7 {  s0 d0 H* q 3.png 3 x( _" v2 z+ Z
    ( I1 a( m" f8 ^, P6 {
    8 o6 q) |) Y7 ?1 G+ |* l# R
    - `; T: N! f: U4 {3 S
    三、 用数组实现队列1、队列的接口定义
    " J" e8 l' _' m' E$ J+ s/**- p* p. S3 ?1 V% v5 N7 I1 d  _9 h
    * 定义队列的接口
    1 d! v3 C/ K) \9 A* k6 b3 g9 I *
    6 X5 o, a3 u( q8 o * @author zhuhuix
    6 g& T2 B+ L' V7 |. \# b9 }0 K3 X * @date 2020-05-01) P3 L! e8 z$ [) B. [* Y0 _" S  Q
    */3 A/ x: h4 g7 d: ~% y2 L  O
    public interface Queue {
    9 j; p+ l4 l6 `3 h5 ~
    & e2 k( P9 y$ A! x! n  R    /**. s& d2 S/ J) N. \" M# Y
         * 获取队列大小
    " d+ m  i0 U: z- q; h     * @return 队列大小4 m+ b/ I4 p, w# J4 F% b! p
         */
    ) l4 j5 Q! `5 Q7 d9 ^, c    int getMaxSize();
    # |, R  X1 X8 Z( ^- j$ M. O, t- F6 F  j3 L. [* g$ i1 d
        /**
    0 @- k5 }' A: o# S8 j     * 入队
    ) A: S7 h, n) c7 S( Y. m     * @param object 入队元素
    2 @; g7 n) Y( l+ m0 T* k     *// m( @$ L, S( f  L! d4 e
        void push(Object object);- e$ F$ F* \, b( F5 W; J( _4 F

    $ y; H" I: T: J5 Y7 J% P* V    /**
    # b1 B% \# x& A2 h+ u. o     * 出队2 {9 I$ c8 \) A
         * @return 出栈元素: n. G# W- P$ \* c+ f+ v
         */
    7 b# V; T9 Q  \1 R. w! U    Object pull();3 w$ t& M& C) d1 l
    ; z. Y2 N$ q% K6 \
        /**
    7 O' |' y# @1 N2 E% Y2 w     *  获取元素个数
    ) s& s; B% w2 T" a/ U1 j     * @return 元素个数
    6 h, g+ O* p5 `4 `" \6 K9 t. G     */" k! w6 H: x6 r; W- I
        int getElementCount();
    . g# t* `+ y$ L
      Z& W5 B$ K  n0 G% ~1 `0 r8 s. Z! c    /**
    5 ?2 m; d4 }. O% J9 J     *  获取队头元素; U3 o, p, L7 L: o  |# r" I
         * @return 队头元素
    1 E$ L) E4 M9 a     */
    2 Y! b/ |0 w, Z  X    Object getFront();
      |4 Y' U  Q8 ^: h
    , [9 C3 l- T8 B3 p( `    /**
    : l9 H9 u. b3 A5 K+ s     *  获取队尾元素0 g) }8 T$ c; v5 K: N
         * @return 队尾元素
    $ O  u1 \4 j  ~     */
    4 t6 ?$ Y$ j( K+ c3 z    Object getRear();
      W4 K9 _" I- m( o4 S4 @' p! T) U) S( }8 r
        /**6 T& C. v$ F# E4 F% M0 B( _
         * 遍历队列的元素) h1 P/ K' N6 y3 h
         */
    3 X) w- }- V/ m    void traverse();
    7 E: m6 f/ V0 i. y! C- [}8 k( N8 w" c! L- P. g
    2、队列的接口实现8 Y# b- H$ P1 ]
    /**
    7 b& X; d. H$ J: V& O  _! V+ X * 队列的接口实现
      J+ w$ z; }8 o; k) Q$ ^6 ` *
    : l8 A# O" F$ [1 G. F; R * @author zhuhuix/ _( G4 U4 x3 e# q3 [5 M
    * @date 2020-05-018 D7 @6 A" j( d  }) E2 M+ ]; v& T
    */  a( I" g3 ^, _9 e
    public class QueueImpl implements Queue {
    & }0 M4 s2 ]0 ~8 c) c" H% I7 E& M6 w: j+ s. ]( Q
        protected Object[] element;
    % X5 k% t* P8 u+ _$ \' h1 g0 b0 Q0 s, x$ m& ?
        protected int elementCount;
    ! [" M5 B! J  s; t7 r
    + f7 y/ q: H0 E# V. P    //队头5 h& p0 m( ], q% c
        private int front;8 ?/ o! k, f! Q. m

    & I  L4 ?$ f( T+ e    //队尾9 y1 ]3 Z8 T5 ?, [
        private int rear;# a3 E7 T) Q4 n
    ) X$ i, p- Q* A
        private int defaultSize = 16;, O* j3 S: x6 @. l8 W

    8 U0 \% e$ s' [$ M8 ~* G    private int maxSize;5 h* A7 g; K  f9 {/ A

    & p" U1 x! j- j" C9 g9 E2 B  l% e    QueueImpl() {
    , @& }/ m% _  e% e+ [/ U  h7 t        element = new Object[defaultSize];& L% X( C. X9 K( m) ?: L
            maxSize = defaultSize;" ]. ?( a; d1 w/ f' w
            front = 0;
    6 `! o& [$ I- K3 m        rear = -1;
    & Y# y( X( [5 g/ }' R    }& O' N7 {; }% O

    2 q" ~. i4 {5 L5 A) ~; V    QueueImpl(int size) {
    2 y7 }( y- x2 q        element = new Object[size];- L$ o! n% D( j' n' E; E
            maxSize = size;! Z' c/ K8 y. s, ~9 F
            front = 0;
    , Q( H0 Q, @" O! Q" T+ T( Z) m        rear = -1;8 _+ a# m" @. ~9 l% F
        }1 }3 J. e1 ~+ E- A+ v
    * [$ i8 D# e6 T$ x
        @Override
    2 \9 C( O  y/ C9 P8 O    public int getMaxSize() {
    0 h; r) Q& p, F' P7 q0 R        return maxSize;
    . A1 m! \4 n/ s( N/ P: @    }# P; L3 d, u5 _' [/ m7 I$ F

    7 z# S* A7 s) A- i! e    @Override
    " G, o' `: a/ G! Q7 G    public void push(Object object) {
    6 V# d$ b  o5 \0 t        //如果元素个数已经达到数组的最大个数,则进行扩容
    5 a" G" E- w3 z6 \        if (elementCount == maxSize) {
    3 k* y8 J9 p8 D            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");" i  B- l' ^. q% ~% j& S
            }# }3 W, _* n  c* s9 `1 |. D4 v$ s/ `
            element[++rear] = object;
    / M, A3 m/ z6 ]        if (rear == element.length) {/ s/ Z  `* a  j+ V
                rear = -1;
    + Q9 U- i9 [4 G/ u* y" C        }. u5 L& F' p9 _- R( w
            elementCount++;0 O" h! d4 l1 ]
        }
    8 k/ B2 [1 t/ F
    1 t% y$ n# y  J3 s8 q" B    @Override
    ' A; B& b* ^: I    public Object pull() {( S- ^5 ], h# Z8 |$ |
            if (elementCount == 0) {- d2 a. b7 E5 R
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    # w! \# E5 u7 T% e$ i        }
    ( `3 K8 U  R. p2 ~        Object object = element[front];- R0 i' s0 c+ u# \
            element[front] = null;8 F3 X- c2 x. h/ U) E. k
            front++;
    + u8 h/ ?3 |6 d3 d0 ?1 R2 [        elementCount--;: L: {/ t9 R$ e8 I& L, Q/ U, H, }
            //队列清空,队头队尾恢复初始值
    ) \9 [, K7 _2 j. }( B        if (elementCount == 0) {
    ( F7 n) }8 Z1 Z# L            front = 0;
    - d4 ?5 R9 q+ Q4 i            rear = -1;
    " F) P# T. ^2 u3 p/ |* q        }
    " F; B7 {1 T" m8 W; E6 \/ G8 S5 B        return object;4 x8 w( E& m2 N0 I2 M) K+ z
        }( o$ v6 e2 M1 l' V6 l" q/ ^
    ( ^4 R# u& r" a
        @Override
    % k  L# V) x: j1 \& \' {    public int getElementCount() {6 U9 n1 ?/ e( M& U, [' Q! e# i
            return elementCount;8 \9 w! [% B7 t9 }; a3 Z
        }, g4 f' ^. y% w6 Q! [4 a
    ' W, x8 e; T$ t1 K# n
        @Override
    1 L" ?. F: J7 g, L3 X; D    public Object getFront() {
    ' ?+ k/ _9 i2 ?        if (elementCount == 0) {
    + ~4 t. R/ g# b2 p3 o: r3 J            System.out.print("队头无元素");
    / \& c3 v( z2 n6 y  @, w            return null;* l2 K0 [. m# e! t' \  ]
            }1 V2 P/ S* E& ]/ w8 n8 b/ e
            return element[front];
    # o2 r  w1 N+ w    }* N3 }9 v8 t. y4 h/ `$ Y
    1 M6 g. H' a. H& k# T+ W
        @Override7 d) L0 {& ~. u
        public Object getRear() {+ \, D3 i7 t+ t. A# ~! O, w0 V
            if (elementCount == 0) {( a# z0 K) X% ?4 G# W
                System.out.print("队尾无元素");: A4 @$ W- ~1 Z6 r: V
                return null;* j* V" `4 [+ K9 ]
            }3 h/ c( l; }$ a% |# E& y# R
            return element[rear];  b1 E2 o# C; |7 L7 K
        }7 y3 s$ v0 F8 R: M) [8 ?

    ! b  q( D7 b" |; n: G5 B! j! E    @Override
    ( C& F( L0 E/ A    public void traverse() {, \) f! c$ c8 N- p0 S: m7 C, U
            if (elementCount == 0) {
    2 q9 w2 ^. X5 d9 J/ H1 b- [            return;
    ; W$ ~; |0 S. K4 `        }# g& ?3 h, \+ d+ {
            for (int i = front; i <= rear; i++) {3 ]/ c! I$ h) M% K) t+ F* n6 s
                System.out.print(element + ",");" }) S2 o- C3 x* I9 F8 _
            }4 c$ W6 j0 m7 g1 T2 X3 [1 Z
            System.out.println();
    # l) k8 G8 V0 C* e" k8 S/ I, ~    }' N( D6 q" s, |$ J5 w
    }
    9 a8 z% _. n, R( U$ O: R$ @; U1 y0 [& ~1 Q8 X) D

    & W2 O& r6 u# G, R. Z8 _- m3、队列的测试
    ' x4 C4 T$ U( `" Tpublic class QueueTest {
    & h( n$ U: s- t    public static void main(String[] args) {- J4 x! p" b2 q6 k4 @
            Queue queue = new QueueImpl();: \$ i' t  w% @2 o
    ( S& n1 X& J. k" k/ b1 q
            //获取队列大小% u7 L$ j) g; K) j+ C- z- e
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    ) \* ]& K4 b" t1 R0 x: e4 N( g7 g
    ' Y5 d, f6 u  V        //第一次入队列:压入1-15' X1 u# x* J# h( t. R- h# d$ C8 _
            for (int i = 0; i < 16; i++) {
    - \2 R) B0 ?3 U: ]0 p            queue.push(i);
    : a/ o0 R6 m: m: H1 Q$ _! |        }
    2 ?( A6 ]5 ]" S* C9 m6 D+ _3 Y        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());0 t* U/ f: j' t, k; l
            queue.traverse();5 a! b$ ]' Z# d  T" x
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    5 n# |4 S; I* X3 K6 j' t4 C. {* t( F
            //第一次出队:取出0-15
    . W: @/ N" K% b7 U        for (int i = 0; i < 16; i++) {
    ( P0 w6 _! s; q* J0 x# \" [            queue.pull();
    " d" _8 i) K9 V. f) V3 B        }/ |9 h& C: _2 L" f' @' W
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    : K. A& V; M- X  B% t# B/ X        queue.traverse();& S9 W6 e: b. W3 g) F+ Y. s
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());9 k" `9 |3 ]' X
    ! u5 U& @) V1 D- m

    . H. Q, r; Y8 m! n& Q3 P        //第二次入队列:压入16,31: d$ U& [, W1 s
            for (int i = 16; i < 32; i++) {4 X& l. l5 x! ?9 W0 N  i3 i
                queue.push(i);. K6 l* t1 @0 s/ L
            }
    , W& h: W0 B# \        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    & {: d6 m# ?' S4 |- l: s        queue.traverse();
    / J1 ~, Q3 ]% r$ a  u# S, G; \# x; a1 r# Y5 X+ e6 K. i2 M+ O) G% Z4 z
    ( @7 f, i2 E$ @& m) @# X# S
            //第二次出队:取出16-31
    * }! |0 ~3 G& ?9 `9 n% V        for (int i = 0; i < 16; i++) {
    9 @  W: c- j* j) G$ F            queue.pull();+ {$ L# [! w4 @
            }
    ' L7 K7 Y' w+ m" K8 K        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());/ E" A8 ^$ [2 T
            queue.traverse();
    . |8 w/ t9 [" G6 C( U$ `
    0 `1 F. K2 b; Q- v* g8 a        //空队列出队报错" G% O* w1 y9 w% Y8 x
            queue.pull();9 G3 g: a+ O1 d* F+ o9 X- |
    ; M( m* K3 ^  z: v' p7 \. G2 i. i
        }
    0 ~! ~5 C- O2 O! m7 }}
    , g3 V3 P% A* t9 Y6 U- k) H& l/ v
    * W2 f, |# k, ]8 k
    : n7 x% X0 Y5 u) s0 T  l9 p  E. R3 D* @$ b2 Q- E/ @' h; B2 @
    * }) _2 R. Q* N. y. ]( W

    4 g3 }' g4 s6 }& B6 H. C3 ~
    ) Z, d$ X% l* Y  E8 f
    * s6 F6 V$ f2 T  v3 r
    5 u3 u9 l+ u* m) A0 m: P! |; e& T. ^1 ~( Y
    9 m- A* `# }' ^9 B) r/ ]

    3 i2 P: R4 Y$ ]1 k! @+ U- g8 [% g# E# M1 a8 K" \. ^- {7 Q- I
    2 Y' \) W+ [5 Z) }) K& v+ z
    2 c; w- z3 t: O, f4 ^
    , V% a9 u. r2 s6 C+ s+ ~
    ————————————————6 B0 \/ n8 T: q+ D) j8 }3 c/ c
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 q- Z+ u6 i' R8 }( U8 Y+ F
    原文链接:https://blog.csdn.net/jpgzhu/article/details/1058767853 p$ q& T7 Y- P- x  W- t
    + g6 W8 L+ g0 n1 N' T

    * w& r# B. T7 e/ q3 ?, v
    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-6-9 21:43 , Processed in 0.457422 second(s), 53 queries .

    回顶部