QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1776|回复: 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
    3 C% c9 U3 \: b2 \* }' u( [
    数据结构——栈(Stack)与队列(Queue)的手写实例9 W& `& s( D6 k% {* B  @

    2 I. `" o# n( E( C6 T# w9 L! w  M[color=rgba(0, 0, 0, 0.74902)]文章目录
      / h8 ?' g, }+ o0 m" ]& {
      • 一、 栈与队列的定义
      • 二、 用数组实现栈' d7 X  \9 J! `) y3 r: H* u
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          ; S5 |3 y* ^0 k
      • 三、 用数组实现队列- Z/ n5 P$ U( D# p7 E" H& A! Y
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          8 R( n; t: c- Z4 ]

    # z+ [4 ~8 t" A9 L# D# `! D2 f/ o/ r5 P+ \9 V
    一、 栈与队列的定义# r+ M' L! _( T& Q6 w
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    # ~* t3 j) E* R3 w 1.png
      q$ M6 u  o6 m. h 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    5 r$ F1 g, D' _6 ~ 2.png
    ! a4 N4 R. ~" c( p3 i0 n! w& ~! G7 m* J9 u8 I

    * L7 c4 `% @2 a) |5 @二、 用数组实现栈1、栈的接口定义$ n- U2 m( }" T4 Q) D
    /**
    6 D8 e) f; A: [0 z * 定义栈的接口9 _5 Y1 G$ @1 @% ~8 u- D. E- ^, r
    *" U4 U! C: i# V9 n$ u9 d  n0 q
    * @Author zhuhuix
    8 E) O5 u0 e* t * @date 2020-05-01
    2 |/ ^+ D4 s  A" `& u$ T% E: `# J */( D  h6 U+ \; o, O9 E" C/ z5 u
    public interface Stack {1 v8 a8 K. ~; c" C$ R; K
        /**5 {- n9 ]# P. u. k! R4 o
         * 入栈% f# J5 s/ @4 Y% a. q
         * @param object 入栈元素
    8 M7 i5 h3 G" a5 a& c6 y     */
    % M2 b) L2 h( \% o% y' l    void push(Object object);
    - [) @& b# A! [" S7 v2 o
    ' F$ y6 m. `$ s$ w1 `6 R    /**
    # C: P6 N/ J5 M) h     * 出栈8 n2 S% I2 y, h: K2 s( l
         * @return 出栈元素
    & L. x: s" H! H; Q     */* w, Z4 q% J! e
        Object pop();; N, V4 k1 B% c3 n- k% i" {  l

    * f8 m" @3 ~5 L3 A    /**
    4 t8 u6 o6 D$ @) }% V, N     *  获取元素个数
    # {  ?8 `: p3 }/ D     * @return 元素个数4 X7 o- q) D2 j: G* _, I/ o
         */
    " F: E6 X4 V) m- g) ]9 W6 o0 {6 X    int getElementCount();
    4 L$ q1 _! u, \3 j
      t) F* v, O- w5 C+ q  O    /**
    - H+ M" v1 T; w/ e5 V. |/ g& f     * 遍历栈的元素
    ) j7 c3 R6 G. I+ M0 r' F     */
    " Q3 B( z! R4 f3 o( z& i5 A    void traverse();4 [) D. p) b8 T+ ^: Q1 e

    8 n: ~' L0 P9 P& e5 R# c- ~5 n8 N}0 f7 ~9 L' d+ `+ g! w  {
    2、栈的接口实现& t3 t+ ~1 u- v7 {# A
    /**
    6 y9 b* x3 ]5 t( S0 p * 栈的接口实现3 {: W) ?3 h( u
    *
    6 U2 R8 [- R" K# n% ]/ }* N * @author zhuhuix* L2 b6 s2 b+ ~# P$ t/ |
    * @date 2020-05-01
    9 A, T' G1 v2 W7 j& G, h */
      t; I5 m3 o/ v6 u5 k, C0 x1 Lpublic class StackImpl implements Stack {# B( f8 B" }2 @: O$ X9 O% v/ Z2 O
           
    2 j/ i) y2 p9 L    protected Object[] element;8 x) |: C1 {3 H# D

    6 c6 G( m6 P4 w2 L    protected int elementCount;  }1 C$ L$ B% H
    $ V8 }' T( J9 ~+ I' m6 x
        private int defaultSize = 16;% `9 M, ?! B6 E; s% l6 q- S

    8 \8 Y. v" p/ W, T    private int maxSize;
    / t6 R( Q  L/ y) W& z0 ?, o  p; t7 y2 G! o! S' i7 K( w3 b
        StackImpl() {
    4 I$ W7 L: T! A) `        element = new Object[defaultSize];
    8 N  A* |! x0 k& Y" S& S, |        maxSize = defaultSize;
    * z9 _  C! X( _: L! X    }2 p) W: z, U8 s8 P6 |2 [
    $ B3 Z, r) u: |1 e
        StackImpl(int size) {. G- G5 [4 @) P8 i$ N/ r$ a
            element = new Object[size];0 n- z9 ^. X/ n+ f* s# J) o  H% {
            maxSize = size;+ s& Q4 b& w0 N  n) x! [5 `9 i
        }# u+ t8 s) e' [( y' A) g' C, J6 w
    & o+ D" I7 a! K) e# h; a" f
        @Override
    ) B5 l6 l- D9 {    public void push(Object object) {
    ( L9 I) O1 M+ p        //如果元素个数已经达到数组的最大个数,则进行扩容
    6 b$ X' [& r1 l        if (elementCount == maxSize) {6 s! c2 O' `+ K6 r- o
                element = Arrays.copyOf(element, elementCount + defaultSize);
    : ?% ?/ u, M5 K* m, Q        }
    3 [$ b- y/ F# r. n' b+ [4 w. P        element[elementCount++] = object;$ F% p% o" W" E* n* @
    , J4 a2 C9 @8 F7 _3 I6 @
        }
    ) k( A: _: e$ i+ J3 ^        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    8 A. A. P- e9 q& R  J) Z    @Override# \9 d/ @' p5 g. N
        public Object pop() {
    - Y( ?  n7 z5 N+ J$ c        if (elementCount == 0) {1 k1 m$ r5 e- v7 _1 y% m' x
                throw new ArrayIndexOutOfBoundsException("栈中无元素");4 D$ W  E( E$ r% t
            }: _$ u! c% i% l" m3 W& ]
            Object object = element[--elementCount];
    6 n% I; c1 b( x' e5 I$ g0 K        element[elementCount] = null;
    5 P8 v* ]1 \) V; q3 e        return object;' G7 }0 j% M$ V% V7 X1 Y
        }
    . C/ F+ c8 U: P! r0 l' Z1 l
    1 z5 ?( r8 {7 \4 ~1 a; F. r    @Override5 x/ U  m* R$ S$ S/ I% F$ s7 p
        public int getElementCount() {0 r" y, x7 a% _, F
            return elementCount;
    8 A7 D. H/ [% D! ~; \6 y    }3 p! @! c2 X6 A7 i$ p6 M% s

    & y  @/ M6 x, y( K8 p$ m    @Override
    9 L# _( X: U: Q6 _0 F& P/ w4 X( w    public void traverse() {2 S( H# X' f& c4 V# m+ [; i& G
            for (int i = 0; i < elementCount; i++) {
    - k, \$ f/ P( M$ K7 Y            System.out.print(element + ",");3 B5 C$ Y* X) o9 s1 s4 ]9 q% |4 b
            }
    + t9 m2 }% N/ g8 @" H        System.out.println();
    9 E- S, ^( ]; \# a1 o* ~    }; m  G  ?3 V& O
    }1 j: t6 y- ~/ m. M. Q8 w
    3、栈的测试
    ; T' k' K) e% D" apublic class StackTest {
    & |1 \7 n# w3 u  E! I$ P6 L    public static void main(String[] args) {
    ( k9 ]. d/ R! }* X        Stack stack = new StackImpl();
    2 E: i/ ]- R; I3 q, v- }) r8 Q0 m2 \7 a
            //第一次入栈:压入1-15
    1 L- q6 _/ i" g* e$ {$ M        for (int i = 0; i < 16; i++) {: j( z+ ^7 h# i5 B+ p$ U- F
                stack.push(i);
    1 A  Y' Q$ I. T# Q& E& S        }
    7 @6 F8 i; h4 D9 q- b        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());: w) \- Y6 L3 d3 m0 z% n
            stack.traverse();
    ) r) y- [- R# n
    " Q  ?# k: d) D+ H+ F% h        //第二次入栈:压入16-31
    * R/ t2 e, u7 O2 n" W) ~2 H) h        for (int i = 16; i < 32; i++) {, w" m8 J. B# q- T
                stack.push(i);( s; {7 t+ n0 l& C
            }2 j5 F+ V- [" C( T/ P- ~
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());) Q! ]" x% q# X2 X6 Z5 @
            stack.traverse();
    , L( T( W$ y6 X: ^! D3 n8 ?) [; m3 ^+ S9 H5 |( |# Q1 G5 R8 F- N
            //第一次出栈:取出31-16
    # Y! k/ D/ `  K1 P, O        for (int i = 0; i < 16; i++) {
    $ X6 x/ ?! M+ @  l* C+ r" j            stack.pop();
    $ \0 C$ K: \- a7 z        }
    / s) J% O0 y" d/ u* C, E        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());0 g0 j- N; g( x' B
            stack.traverse();, B  b2 a: z0 T* G! s

    ! S$ `& o" ^6 i/ K/ I6 O! ^        //第二次出栈:取出15-00 J+ I4 B6 b, `3 p
            for (int i = 0; i < 16; i++) {
    ; V/ o/ d% m8 ~, D            stack.pop();% E8 s  \" i0 }! U! M2 p
            }
    . Z. r5 W$ E* S& ]        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());& V4 {+ K; `5 L( I1 m% s' r& o
            stack.traverse();& I  g4 Y9 f: g  K9 q: C. {1 w7 v

    * n: ?" `6 W3 _+ g; ^/ K0 G        //栈中无元素,出栈报错
    0 F5 \9 g; r. w* [# u8 Y9 C! h        stack.pop();# [5 V6 Z, c8 D7 l+ R5 ~

    8 Y# `5 [2 S. e    }
    4 L0 Y6 |; V( h0 [1 x}
    * e/ b6 a# G3 U 3.png
    $ l: v) C8 K0 F0 F& r( \. j; b/ N9 R1 E" Y  ]
    3 v3 C0 a& w- {7 a0 }
    9 J" T) P/ k2 a8 c. z
    三、 用数组实现队列1、队列的接口定义
    2 l" K* ^) ~: x. j; [4 ?0 A/**
    - }: x5 v9 V8 f0 }: p * 定义队列的接口$ s& W  [% T3 a% E7 S, u
    ** ], @8 s( k! q
    * @author zhuhuix' M( N0 j1 [* v; {
    * @date 2020-05-018 p% H+ C5 E6 ^. ?
    */
    # F) x6 |1 d: cpublic interface Queue {4 L! r0 n7 D  }6 e8 l' f0 S
    + y5 e" u0 O  n! }9 l2 Y
        /**5 y  _7 {: B2 @( z# \
         * 获取队列大小( |1 W1 g5 F' _
         * @return 队列大小2 n, g! h$ z- V2 `
         */
    ' C$ i/ e7 E: V" @    int getMaxSize();
    3 A' g& {' I1 a$ z% P& C! f
    $ V; c. r8 b# g4 V8 W3 T& l; ^8 w    /**! t, x& V. S5 G1 a4 ?" o
         * 入队
    ( V2 V- G  e( m     * @param object 入队元素
      d- w  N- u/ ?1 L- J     */
    9 ^$ e/ S' n4 j% t) X9 z    void push(Object object);
    5 f: u1 E1 W# c; N( t0 o
    . }2 ~$ \  j0 z0 y  x    /**6 Q3 |( k! j( D6 r
         * 出队
    8 g5 W* \8 J% w2 ]  t# v     * @return 出栈元素: W: ]6 ~: D5 Z  X" a3 E2 {  ^
         *// @& s( W$ v& P
        Object pull();
    ) m% z! j* Q! b# m! R& Z' F! Y1 A; o; g$ N
        /**9 a& O& R9 K7 A
         *  获取元素个数$ M3 q4 j! o  h4 e1 N9 {
         * @return 元素个数
    4 X: k+ R& ~8 w! c% U: s( k     *// K7 O; r9 h! _( E# [8 ^
        int getElementCount();6 m5 s" ]( G( ~3 i' l( j' v

    0 T% E" z& s3 ~1 o7 o( N5 @    /**' x# O- q6 ~* U9 G+ M8 M* B
         *  获取队头元素
    5 ?& f2 W, ^* H3 B$ u. k     * @return 队头元素
    2 O* ^' e& n9 c% U0 s! B( f     */8 v  c) X% _6 F: b8 q
        Object getFront();
    0 u$ _: a; i7 I0 B+ }& D/ x: N% }3 ~, o( _; x
        /**
    ' a9 w: [+ l( O, }$ ]/ [     *  获取队尾元素7 b" L7 p* n5 r5 F. E8 w
         * @return 队尾元素
    . m3 F9 H9 a% J& B2 B     */
    1 F% }5 \% T. P8 N    Object getRear();6 o9 ]9 A$ q7 v4 A

    8 K) L" e( M( i4 n4 i; I. W6 R% Y    /**
    ; f1 C4 v8 F5 M& l, H     * 遍历队列的元素
    " \9 s4 v  N; q/ B     */
    + m. x1 c2 D/ _    void traverse();
    6 _7 B1 _: I# v# u% b}
    2 X  M) I- s7 H6 d9 M2、队列的接口实现
    ; a4 l# O3 U% f/**
    5 K; v$ O0 ^! [7 G+ h * 队列的接口实现
    # P4 c% i) X- s' G6 ~: R4 |5 g *
    - k0 T& O" g$ G8 h: M * @author zhuhuix
    ( `! M0 E6 y6 F * @date 2020-05-01
    6 P0 Y" W. n8 u8 p! n* ]2 I2 y */% j9 U' l1 m1 z- C
    public class QueueImpl implements Queue {* \4 q$ @0 e5 q

    ! K, f9 `* X9 H+ o8 C% t    protected Object[] element;
    - [3 `' U' V) g4 _8 R
    ( b1 J/ I( y7 r" [    protected int elementCount;
    & H5 x4 M1 S4 ]5 h+ k1 P7 Q: p0 X5 R" M. N
        //队头8 [  Q+ c  k; x  w3 ?! D
        private int front;4 M4 I' D# D6 `& M% [( L9 ?
    8 r, c3 _4 P# V9 n
        //队尾
    - B6 t' S9 v0 O0 x' {7 `    private int rear;0 p1 ]: Q, ~* q& b- b# H9 G

    # N' M+ p, r) F" p; _    private int defaultSize = 16;
    ; F) z0 R+ \$ U4 v/ S& {( @
    - b0 Y# ^0 J6 P5 k    private int maxSize;) ~$ z, J- k5 E' U, o
    7 ^0 ?) Z4 v& Q. F; f
        QueueImpl() {
    $ `7 ~) V: G7 r' y- \. _        element = new Object[defaultSize];- G% B+ O! _1 M
            maxSize = defaultSize;
    / ?( j' N# j' D- _+ \% \        front = 0;/ O; i$ T* x+ X
            rear = -1;
    5 h0 P0 Q: i* H6 E. n( M8 N    }
    " L. J  ?, R3 O
    ! p! T. R( f' F, b" a9 c! `    QueueImpl(int size) {
    0 A/ R( J4 }" R        element = new Object[size];
    , Z/ g  z* B  e        maxSize = size;( u" i7 W5 U) u9 a! U7 F. A1 j
            front = 0;0 F) k9 s0 i. u$ G8 N* s1 r! \
            rear = -1;9 X5 D# o  r( _9 k
        }
    9 h9 f9 B2 C  N. U- [8 m/ s9 S  W( w" h, t& A, D6 w  \
        @Override, K& [$ x5 P- S
        public int getMaxSize() {
    7 q; |8 |6 j8 M! ~2 L  l        return maxSize;: }' O' X, ?0 q; @2 k! A) z
        }) ?. U4 D9 _: R- q

    ' a% p0 M) |  z" D    @Override
    " j! g5 u; N. U    public void push(Object object) {
    # l0 s' d* q7 G6 G        //如果元素个数已经达到数组的最大个数,则进行扩容
    4 [. M& _- R( {4 t; k% {# x        if (elementCount == maxSize) {
    2 S! _& `, ?1 k6 N/ E            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");& a  u/ I3 h7 v# G: r0 V3 ^
            }
    6 k$ {& Y5 e9 c% j; n        element[++rear] = object;- }- {' Y( n: l* [
            if (rear == element.length) {
    1 }2 G* J, v; M9 N' m- Y- ?0 y            rear = -1;
    9 C6 E+ C" a* w        }& s+ Z2 T! b* l3 L* }" H- }5 p% U
            elementCount++;
    ! n1 F. K' |: ]' Q    }
    8 U6 u3 {1 [7 t: ]* f
    & p% E2 Y4 M8 _. Q# E    @Override
    2 x: s& I0 t  N/ S7 I    public Object pull() {& ?8 G8 n  E8 {8 C$ v+ _
            if (elementCount == 0) {
    & j2 S  I( E! y! f+ `            throw new ArrayIndexOutOfBoundsException("队列中无元素");/ o. V# B0 i' ^' r
            }# F: i- `5 {4 \: W) \2 v
            Object object = element[front];
    ) k/ C6 u& [/ @7 A3 p) V3 {        element[front] = null;- u* i( u! \; J6 M4 S- v! f
            front++;
    " g( [9 u+ b, e9 E        elementCount--;
    ( k  [4 i* J8 }2 R        //队列清空,队头队尾恢复初始值0 R. z) S9 V5 a' I8 F& f; d
            if (elementCount == 0) {
    + p/ A, j. R& k) @# a0 ]            front = 0;% F1 X" |4 ^* j( I# R: C
                rear = -1;
    " P8 l7 h; o8 p6 H        }1 N1 C+ @5 C# y9 j: c( T
            return object;7 ?5 v" Y  i6 G4 x5 i" q# ?* x2 i) z
        }
    . @2 _4 V4 |: ~4 u* h
    , B# ^) m3 i- R- V( b2 Y    @Override7 d' d  n- Z% \. c$ V
        public int getElementCount() {
    & ^4 g! s* [5 S% l        return elementCount;
    " ~( Q- I7 o2 D* S' @    }6 L6 n: j% V4 X: ^

    ! R7 m9 m8 K4 Q* R    @Override* ^% m' b. N; C0 ]
        public Object getFront() {
    : R" Z3 N3 M# @3 a( G8 A5 }8 F        if (elementCount == 0) {
    & z& Y4 h2 ^' U% `5 b$ _6 W            System.out.print("队头无元素");/ v/ \% _# @# R, Y& d$ g
                return null;
    7 w1 r7 n3 s1 b) U( q        }
    7 A; n% u6 p! |/ T8 W2 y        return element[front];) i0 K: S% H8 @: H6 e% d/ R1 j
        }
    4 l3 m( }% C% [- |* J7 h% Q) Z# H1 a4 }. k
        @Override4 ~8 c9 P7 ]; z" @
        public Object getRear() {
    + j5 I+ A' f6 D8 r) F+ t        if (elementCount == 0) {" _- K* _, L1 l) `1 Z
                System.out.print("队尾无元素");8 \4 ?& n& N: `5 L8 t
                return null;, p( E" Q9 m" j3 i
            }' y* z7 ^7 y" f" e6 l
            return element[rear];
    ! F# i2 W0 J. v7 y3 m. t    }
      I- q* N! p% o) @4 B! _: |0 \" V$ p4 {/ q/ b) v
        @Override
    0 b, f" O+ ?: [9 }8 s8 @- A    public void traverse() {( k4 x  O' S8 F# i  a0 b
            if (elementCount == 0) {  t& z3 K7 x4 H% U3 X& d& j4 ^( Q
                return;
    & e. z( Q% V+ \" f+ ?- O" _  E        }
    6 o- K. W, Q/ E5 U, D0 ]        for (int i = front; i <= rear; i++) {
    7 M: V" W* C5 P* c# H            System.out.print(element + ",");% c7 m; w3 r! q4 v  ]+ a' J5 [
            }! V  D& }# j& F, m# n5 C
            System.out.println();, g6 p- {3 S  u* r0 H  G9 X# N! ]
        }
    / M2 @- \$ R) |+ Y  P- M* N  [}6 D3 N* V4 I! D, t# f

    - L1 k3 b7 \; a/ y7 s) Z8 E  p2 L1 i- I( y: z
    3、队列的测试
    % o( @0 U1 r6 r* H# U6 ipublic class QueueTest {. h' K! w5 G, d
        public static void main(String[] args) {% [9 y. q5 g) B; M
            Queue queue = new QueueImpl();
      @7 n$ S$ ~; K% A3 V! w2 ^, C, ^4 o$ {: a8 r
            //获取队列大小
    ! h& \- v; Q1 G6 o; A4 N  ~        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    ! b1 |/ V! u" t. W8 p0 V% [' z1 S7 x7 p. n1 ~3 d
            //第一次入队列:压入1-15; i% _) T. b$ T: o/ |
            for (int i = 0; i < 16; i++) {
    1 B" i  G5 @/ G4 }- b            queue.push(i);0 `' x2 F' z" O9 X; I% }0 S" Y
            }
    ! O* X) n3 |$ B5 J        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());5 e1 D- H; ~) @( C* o. h- }
            queue.traverse();! ~; T( C0 ]) B, p$ `& v6 u
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());; ?- x. T* M( z8 b, G7 `. T( U
    2 O4 P, ~/ t4 X/ N/ a+ O3 S
            //第一次出队:取出0-15  _# N( Z) x4 V: I1 \: O
            for (int i = 0; i < 16; i++) {3 B; s' t& e9 o
                queue.pull();% Z4 C5 M! @7 \% {* r$ {$ c
            }
    , @( s4 k: V. G( q( d        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());1 ?, ^* g' v+ q8 h1 _) O. Q6 T9 c
            queue.traverse();
    7 }& l# h' K1 r8 K7 a        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());, `8 C7 g6 a% w% J. z) J3 z/ u% {
    # y8 \3 C5 d& F" A5 h) Q
    & g$ f' j6 J5 l
            //第二次入队列:压入16,31
    6 O; S* V% G: l' S# w- c8 D        for (int i = 16; i < 32; i++) {0 ^7 J  A" Y/ `5 w( a
                queue.push(i);
    , w4 Q/ u8 ~- p$ f2 k/ S9 W% A        }
    + q* s2 u; y; k& p        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    8 ^$ V* k) g  O2 [7 a        queue.traverse();; J/ T/ r: H2 R: x% M: U
    , O. e% Q: c* e7 @3 }

    ! L) T* C0 w+ i; Z; R- X% Y0 ]        //第二次出队:取出16-31
    - t- R# u/ `+ M; b9 X( Q3 D" I2 a        for (int i = 0; i < 16; i++) {
    6 _% [6 r- o, y* Y            queue.pull();8 O$ u! |+ Z2 ]+ E: s
            }
    3 I* d* C$ C2 |5 s        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    . X: D, X; g4 m0 }) @: d3 y        queue.traverse();
    . A" ]8 ^* C; f
    1 S6 q3 Z; J4 P* S! `6 k  Z1 T        //空队列出队报错9 M: y0 R+ `) x9 f8 X4 Q: [
            queue.pull();
    8 f0 k; X3 d/ y2 q( F! R- Z( D; G& l5 w8 h' |6 R' b4 U. g  n
        }
    * ]: e# y% }- j( D}
    5 T# R' Q& e" w/ z# v$ v; z+ g2 R6 s# k- \* A
    7 `/ W) K. S: h  n! m* D% I

    5 |% g9 @* F& n- n6 m2 \
    8 B0 r- A, \6 h6 f  Y" x) n$ m' T/ p9 s7 F
    % x1 o) @8 d* C# l  k. z$ o+ z4 h: z
    - d8 U( _" V; v" x' ^

    - X0 O! D4 V4 g! N. f9 Q  d3 y2 B
      Y6 g# {1 R4 h+ ~) m' W  B( T8 \7 P% H

    0 \$ `# h! x: I, p4 `. f
    ; a- o! g$ A3 R& r+ {4 _$ d2 f4 r$ Z$ a" F# n2 \( u
    ( @9 p3 Y$ R4 r6 ^5 V$ d
    + u, P' w+ K# q2 j# E  l& d
    ————————————————' k; q9 g/ p/ z( N/ Q3 x
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 w9 d# K/ w  J3 I( `7 f# `; a
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    " P  _7 L# I0 F$ a, _. _) [8 F* C
    2 \* k) P0 a5 Z1 [" Q5 G5 R* k1 f$ g
    6 T; @6 K5 V4 w" L/ w
    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-9-10 07:43 , Processed in 0.419079 second(s), 54 queries .

    回顶部