QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1544|回复: 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
    ; [" }2 I! o7 ^2 ^3 M, X0 `7 _5 t! c
    数据结构——栈(Stack)与队列(Queue)的手写实例
    ; l3 z& C% N* g  L* `+ m* @4 v2 |( S
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      ) K8 G' P# P: @- T1 M
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        6 b8 e' h# W; a) @( |
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试# c9 _9 P" E2 E) l! s! A
      • 三、 用数组实现队列
          H8 I5 v" W* b0 e" I! O! L  }% i' d; H* h
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试3 H, s% J! s  s) w# G
    # o0 K) u4 x  p$ \7 z+ h

    1 C2 A% y/ A. A3 n9 I一、 栈与队列的定义
    ' c* `8 z7 }/ h/ W# V1 g# Y' W. B栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    5 R% ^0 e3 b+ R3 k$ y 1.png % l! i( t2 N3 N; h9 O  ~: g
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    - u- v3 d& j+ j# X4 i# R4 s: u 2.png
    $ p4 J5 n9 m! L9 k/ @& b/ I  o- m. k% h

    - M+ T5 m/ t! M4 _$ K二、 用数组实现栈1、栈的接口定义) @- a3 m5 {) y; y+ X) ]& t
    /**# ^. H8 X! r9 ~+ z2 y6 Z
    * 定义栈的接口" g' d* L5 x( H/ Y  W# _$ u
    *
    * ?. W, K  x0 K2 I2 }3 } * @Author zhuhuix
    7 d# t2 @8 ?% A% K6 ~3 K. ~, r * @date 2020-05-01
      ^) m+ B% y5 {1 b */( n1 @$ @# o# `7 M. a, q3 }8 y
    public interface Stack {
    + G& c* p0 I# z* f, G7 p9 [! I! m    /**  C7 F% ?* s6 G  @
         * 入栈( b! i7 `0 f0 z7 r
         * @param object 入栈元素
    7 t/ I8 K7 [5 @1 t5 ^: N     */
    % E) q: A$ h1 h/ V9 J    void push(Object object);1 h6 d( Q; b0 \4 Q
    6 X+ j5 R' Q+ f! `7 l0 D
        /**7 U/ J' o. {; t- t: J; h5 s- W
         * 出栈
    4 M1 v+ o2 E' {  p( y3 v     * @return 出栈元素: B" o( b9 @/ N' A5 A* ~7 I. m  B
         */
    ' g8 T, S* b5 }5 Z    Object pop();
    - b& p0 \/ i0 V/ B2 F) N& _, [, h- ?: Q! K7 h
        /**
    4 i% A& l" j/ N     *  获取元素个数
    & e" ?% w: x0 f     * @return 元素个数" R: V4 N1 h" K/ R- W$ M
         */
    3 h; P9 d* @9 w& E) S    int getElementCount();1 F" J" z2 n* k  p& W
    8 ^5 K$ x6 [$ ]! s, r
        /**# e2 U1 d: v$ Y9 w( L3 t
         * 遍历栈的元素
      J' _6 i, ]* H' w0 e5 O& F     */
    3 w' y+ }, w/ r! L3 \$ m    void traverse();
    4 e% s; b& b8 h  c9 E! H# y* Y9 g: k" \$ m& L9 ?
    }* h+ X8 F' {" h. W
    2、栈的接口实现2 x% f6 B! u1 q, G4 h
    /**! B. W1 x  d4 s0 A5 V
    * 栈的接口实现  O% N. t1 l) H! Q7 ^0 t
    *
    ; l8 O' q9 [5 K9 v. ~ * @author zhuhuix; `. d" [- f( B" m- K: E5 _
    * @date 2020-05-01
    $ I9 D+ U+ L1 e) |$ m7 G! x1 \ */, V) p& `' `$ `- M4 ^0 k6 H
    public class StackImpl implements Stack {
    . t3 D5 |8 t. b3 N* k0 P" V        3 v  c1 }7 z0 ?/ W1 m/ R
        protected Object[] element;
    # {% P3 U) G9 G/ B: w( N, m9 s9 y1 {* b' u
        protected int elementCount;
    + A6 X8 s$ X1 t# V" ^' E( X+ a( {% A: M$ D
        private int defaultSize = 16;
    5 |- X8 J7 |& F5 s: S
    4 F! D6 N. y/ {! `6 @: S# h    private int maxSize;
    8 [$ |# U0 x0 ]! A8 Y9 w3 G5 g( B' `  U$ a& z/ @8 k! C9 A
        StackImpl() {! s: e2 ^7 k$ u2 E/ y* a
            element = new Object[defaultSize];$ j( ?( d2 R- U( B
            maxSize = defaultSize;3 T# J, @: R: f8 r4 y# k
        }
    6 N8 i/ |  \- o) d/ k# A& g
    # K& |5 T1 q( u1 }8 H0 v    StackImpl(int size) {: J3 D; q$ m' s/ ?  x
            element = new Object[size];! h6 X) z; k1 x
            maxSize = size;
    , ?$ z; Z- x+ O0 p, e# ?$ y! h    }0 o6 b8 Y- _# Z" b# y
    & H4 A  n- y3 W
        @Override5 n" Q1 H. R$ L6 V9 o% C" ?
        public void push(Object object) {
    4 z6 x5 \0 P: b, j9 B6 m' y        //如果元素个数已经达到数组的最大个数,则进行扩容/ o+ r, e8 J! q- r: Z
            if (elementCount == maxSize) {
    8 l5 R( k* V; j0 G            element = Arrays.copyOf(element, elementCount + defaultSize);; P0 }/ i$ q; b( M
            }- F2 O& B) z6 t( l4 t* R4 p
            element[elementCount++] = object;
    " ]4 m9 G" s& O% `8 v1 w1 S+ E' O3 l5 w
        }2 @; E+ B1 v1 t7 P# ^+ I* U
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    : H$ }+ j: ]! W0 H1 O9 B/ m( @8 y    @Override" y7 {! u" U: `# O5 c2 W
        public Object pop() {
    . w/ c5 t8 O7 Z; E        if (elementCount == 0) {
    ' i2 f/ H) X5 t# |: t9 I4 [            throw new ArrayIndexOutOfBoundsException("栈中无元素");3 d) S" s# F  J3 B# c
            }, x, C9 j) p( R' I$ n5 @
            Object object = element[--elementCount];
    - I' [/ P) G2 j9 \        element[elementCount] = null;
    3 ^, f) o% P" Y, s' `3 a4 \        return object;: y2 T: ?' R( r+ }, |" i6 Y
        }
    & p8 ~. |4 C; L* M7 o! X6 J, \+ i. k0 K+ j# O
        @Override. S' p" m8 U0 n
        public int getElementCount() {% u0 c. d7 Z3 y- \
            return elementCount;
    ' a8 p. P. H6 F7 N  G( e" O    }" ^+ @. m$ b8 i8 J4 M6 Q1 F. e/ Z% n

    " g$ S  b, A$ o2 }+ o    @Override
    1 D% h6 d, Q. D. m# C    public void traverse() {
    3 T4 T! l, M4 K5 p: [( h        for (int i = 0; i < elementCount; i++) {; {* f/ q8 w& m. G" q  o
                System.out.print(element + ",");7 w* u' y1 ?7 T5 g! Q$ _3 N
            }9 ~* E4 N' U- m$ I2 @
            System.out.println();) ~  K3 o5 N4 [$ _  P" {
        }* t8 }, H- O6 r9 S" Y
    }: [* M9 z8 f& h; t4 Z5 T& A+ O0 g1 J
    3、栈的测试3 a8 u9 \" s2 Y1 f) Y
    public class StackTest {9 ~, K7 r, H  E0 N, [$ H  C
        public static void main(String[] args) {  W& |' R) `( i% b7 \; y4 l
            Stack stack = new StackImpl();
    & s8 c8 H  o# _% r1 x; D5 Y0 K7 j6 r8 w2 }
            //第一次入栈:压入1-15
    ; y+ M9 D& W3 o$ N& w7 O# G4 u        for (int i = 0; i < 16; i++) {) c7 Q8 z1 m) O& j) u. T' K
                stack.push(i);6 s" C  H! ]4 y
            }
    / o  e# F# y( ]5 \  i0 t6 F1 Q        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    ; |% i) h# I6 f( k5 v: Q. ?        stack.traverse();! P4 |- M, N8 u9 w" {! T
    0 p8 Y7 f* D4 ~# H# |7 p
            //第二次入栈:压入16-31, V+ z: {3 ?- {' s( f9 A. J
            for (int i = 16; i < 32; i++) {, j* }- s3 L- X  V* W) n# b8 S+ v
                stack.push(i);% P& U# b* A; r1 [
            }
    , v' d2 X6 `& @* g5 B( ]        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
      E5 j+ L2 O* {: y7 Z        stack.traverse();7 L; K/ C8 b. d* @) }
    4 f; f+ ^, L" B( S" o7 D3 ~
            //第一次出栈:取出31-16
    7 Q+ q; ^- X, D/ G1 Z$ N- N- ~        for (int i = 0; i < 16; i++) {" P/ e; R' @9 i6 m
                stack.pop();
    ' n3 @( S: U2 j  a        }& m1 A0 ^3 Y3 z% ]+ \5 x
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    8 k! d9 ~5 c0 g" K* [0 _" j        stack.traverse();8 m& x3 t# Z( p' E
    : E2 \  B  t4 h9 w) x6 o
            //第二次出栈:取出15-0" T$ O5 F4 d" H( X% B: d  e% j% c
            for (int i = 0; i < 16; i++) {
    6 C5 N5 v. {  T            stack.pop();0 F5 V' N  T( V
            }
    & E$ P! O, W$ ~        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());( D. U' G& N' q1 U- R
            stack.traverse();1 ~& ]+ [" i6 U! n: ~- M
    ( z* W( S) i& [/ |& c* R
            //栈中无元素,出栈报错
    9 r$ v9 y- T, Y7 H+ P( K+ A6 E( G        stack.pop();* C8 X0 v& J8 M% M* n
    2 P3 O5 [. D7 j; v
        }) }. b. K( I7 c
    }: \1 C% h  M2 e) r! r1 A+ _# D
    3.png / s0 \' W2 F. _% e- G0 B

    ( X, U4 I- W+ I, J3 v6 w
    # n9 m* k1 w5 t( |
    * ~9 x  ~% Y! {0 P; e0 U2 {三、 用数组实现队列1、队列的接口定义; j% J( X! y! O
    /**4 \: i$ l( |9 U+ V
    * 定义队列的接口
    / c7 o6 ]! c( @; s$ \% W *+ r; `7 n& R1 d
    * @author zhuhuix7 R  d. x7 C. W- E: s0 w0 l
    * @date 2020-05-01
      j3 B+ S; q+ V' n0 N1 t5 T! X */
    0 D* V; q6 n+ n  C: x8 M- m. M$ ppublic interface Queue {/ B0 A) J: z- s

    ! F: Q. G3 W$ m2 \! X    /**, Q- q5 H& a( K* Y. n( z4 x; K3 ?( M
         * 获取队列大小" {8 h1 m9 U$ I1 Q/ H  D+ ]
         * @return 队列大小" p, D. ]* a3 L1 R
         */
    7 L- [6 ?( L. ?8 J1 `+ A    int getMaxSize();
    / \5 N. E. p. i$ O, S9 ^: _0 O: ^) |, ^; S
        /**# F7 O% c' }) K( j0 v
         * 入队2 q3 v5 i! D9 w  z0 Q' a4 p
         * @param object 入队元素
    & S/ L( i0 z/ v8 y     */
    ; s6 }& X! f" W' s8 A0 k    void push(Object object);
    1 ?% i, [3 p! y% M7 y3 s9 M  V, B! Z, @2 S/ T5 k
        /**
    ( Q' J5 C6 B+ B4 @+ b! d6 a     * 出队
    & g$ C& \% P0 H: q) e) M) \     * @return 出栈元素
    & M/ z! l3 e+ C$ Y  E+ {4 n% x' _     */8 k( b) a! a% c6 i# N
        Object pull();1 |. x* l  v$ K8 @0 S
    8 _; _' T! a- T: D5 [
        /**( n% ~+ E! l/ b8 L0 M! ^
         *  获取元素个数
    3 i: s5 E' ^2 Z9 ?     * @return 元素个数
    ( \: V$ `) b! V2 S     */
    1 t" I2 R6 M: K4 ]    int getElementCount();' G, m3 W% h& I. S
    " q* @% j; R3 {, v: k, o$ v. h
        /**8 @' N" D$ y% i4 q( z1 o" z/ ~! J
         *  获取队头元素
    . y& T5 X1 e9 r7 q* _1 \     * @return 队头元素
    6 C3 x; U- D" Z9 x8 [  r% f     */# h9 J, k" B! N
        Object getFront();6 {0 P8 I/ N$ N* P  T6 O/ a

    4 d* {0 t  o) V) i7 P/ y    /**5 z9 I- i/ x- G  t
         *  获取队尾元素
    ! q- Z: S! B8 N+ i& W6 j. {5 U) U     * @return 队尾元素% R2 m0 B7 Q. _( h% K. a' Z
         */9 f- J3 q4 n$ H( }) m
        Object getRear();
      Y) k* T6 t; \8 }$ r' P8 `0 W7 A  \" J9 I7 \2 b
        /**/ l: A: q6 k9 U  H
         * 遍历队列的元素
    / D4 o* |7 ?! u* q     */' l$ Q1 M) ~  d# P$ B8 I
        void traverse();
    7 B3 h  Y9 K0 g3 ]  F$ e! g7 b}
    / ~$ i% y+ |! U* Z! {- N) W+ M4 ]2、队列的接口实现
    " r8 ^7 E" ~" Z2 I8 H/**7 n  R3 n. j5 T
    * 队列的接口实现8 M, W, y: W! W
    *
    % f/ g( b6 ?3 [7 u( \ * @author zhuhuix/ W& l: }( w6 U& N9 u
    * @date 2020-05-01
    ) m$ [# w* }" P# |; ?4 z5 s0 w3 a; h */
    - ~( U' J( K- ^" I: h; apublic class QueueImpl implements Queue {$ [/ Z! q4 ]! M# J% o# ?3 C4 N3 L6 R! c

    / W) Q* }. Q* d- J2 D    protected Object[] element;. i( c" {" n3 F- E8 r" j2 j" E, U

    ) `, z2 ~6 g& ~# s2 G( ^% q9 C3 q, ^    protected int elementCount;0 G. C  p0 B, G6 }0 v

    ' h1 m% h( r1 p6 G  Y7 V    //队头
    + @3 R' ^# z  d1 X" x& B7 Y+ h    private int front;  B1 Y2 h, Y! t

      {# ]2 B% o+ }+ W1 f    //队尾
    4 Q& Q$ b! o6 [+ g    private int rear;' E& Z5 x# `: |9 P/ d" i" @, r+ O
      ]6 m" Z6 I! _( _5 ^) U
        private int defaultSize = 16;
    # r$ a4 x8 J" R$ N8 Z5 t( z1 h  W8 O3 m/ u% A+ l1 f
        private int maxSize;$ B! R5 h" k  a0 A% }' _7 t) e9 d4 O3 C

    1 j) @( u+ u( j4 \- a    QueueImpl() {
    1 j7 g/ M7 E/ n: H8 D9 }) u  D* [        element = new Object[defaultSize];( ^. e; {: w1 v4 q8 ?! q" q+ m3 t
            maxSize = defaultSize;
    7 J1 ~( h3 Q$ J        front = 0;
    . }/ U4 l8 U3 X5 R7 t  q* F! n        rear = -1;
    $ ^7 D3 o: I! ]7 d6 i7 X+ D( A    }
    9 p, Y, W% R$ J4 A8 c/ R
      u1 M3 W; N$ H  ?1 q    QueueImpl(int size) {+ R* d1 t9 R+ ?
            element = new Object[size];
    ; x# p( I' D$ Z        maxSize = size;- p( a- U9 a$ V) e
            front = 0;) I$ F% t; z9 f. h$ l% p
            rear = -1;# ]5 y0 _9 v3 p; T7 B+ E/ i+ |
        }
    2 l' z0 C% r, U  U, |7 N4 |7 Z7 s
    * J2 r) B! [6 q4 L. k    @Override
    2 v* W0 n) S/ I    public int getMaxSize() {) ?) |) x$ U/ l: Y& f8 M( b) c+ Q! c
            return maxSize;6 x1 G: A+ G, f! ~
        }. E. ^7 I% [' [, @4 c$ z8 _' @5 f
    / P# x+ O- b( z2 m
        @Override/ M9 b& \" F! f. u6 i2 o$ [& `5 z
        public void push(Object object) {
    , O  S: s2 ~6 z' L0 V        //如果元素个数已经达到数组的最大个数,则进行扩容
    " O; a1 R% V! Y/ R        if (elementCount == maxSize) {& ?6 S# X6 Y) g. }3 u: l8 X- _/ q
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    % N1 ?* T3 Y% Q  v9 r5 N- M        }
    % C2 n- M8 B$ K        element[++rear] = object;3 b  N8 w* b( i- ^* h  ^* ~
            if (rear == element.length) {# ~! x- b8 u, n% |# _, Z
                rear = -1;
    ! w! Z: v3 N: b8 w2 h        }) T4 a5 F1 }( ]
            elementCount++;
    , s& Q5 J* N6 O3 t    }
    ! K% F; b& x% k
    / w& O+ ?; [1 C$ y, K    @Override( A, ?4 s5 P# U3 p
        public Object pull() {1 z1 C# G) h9 q, M0 g9 m
            if (elementCount == 0) {
    ) t- u9 I6 Y& S7 g1 \9 ?* y            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    " m: @$ E( Z& Z' V        }
    ) U0 @8 R- s7 A7 b" t        Object object = element[front];
    ) X7 L1 z) _1 s; U5 v4 Y        element[front] = null;$ P: ?4 t3 p, h5 T0 F" Y
            front++;
    , K. \2 z* g9 z. u4 V9 ?; ~5 X        elementCount--;+ E) g( U3 S) d
            //队列清空,队头队尾恢复初始值9 D" A- t( M8 Z3 F7 S0 `% m, v- Y
            if (elementCount == 0) {( n( B: K& u0 D( S3 C' J6 ~
                front = 0;5 ?# K+ }1 m7 r$ J8 T, W
                rear = -1;9 a2 |& V* J1 p( m3 J* B$ }2 \: _
            }8 o0 i# K  U8 _& t. ^
            return object;
    - G, l) S0 |% W- D& P    }
    $ E5 P2 D. p5 H# W, B' U% _! F
    : D5 [# z' A# @0 Q+ r    @Override
    - x* B" v+ D$ u  m9 L* @    public int getElementCount() {
    - _- b: V  f) |% V        return elementCount;# v; q6 g$ s8 P; s( ]
        }6 P% j0 p! v2 w* L# ~  ^; f& T

    8 X0 s! {' S* [, S9 G8 b% L. ~4 M    @Override, T8 R1 t/ \3 g% W' c8 T$ l5 P$ G0 `
        public Object getFront() {
    . p  Y: M( R7 m8 u7 p0 C$ N        if (elementCount == 0) {, \0 c6 Z# O9 G( ^  z
                System.out.print("队头无元素");
    : {- ^+ @" }* s: r            return null;# a& `2 ?/ N* h; M2 r4 X
            }
    - z1 C( H7 Q# L3 n+ f  t# [2 H0 C        return element[front];
    # K; D! R; _- \; _% h: w( c    }
    ; a, Z  U9 r! l  s. d+ v! t
    ' i& b" p. i( g3 }5 E0 f) A    @Override2 U/ w0 D& X1 W* t4 k* D
        public Object getRear() {" o% k/ A! C2 `
            if (elementCount == 0) {
    3 ?4 E" m6 ~6 l+ b$ B2 W% N! m            System.out.print("队尾无元素");3 X# `; k6 R0 |4 y
                return null;
    ) g9 V# g& ?, c* K% D        }
    0 K2 e1 I8 a9 w* F* M2 _        return element[rear];
    1 @: O$ I# U. m- l6 R$ f    }
    . f: m  @( s# T+ ?7 q/ o4 M% Q( x7 H1 d3 w) S  ^  P' ^
        @Override& r8 e" v) f5 [9 s: Y6 A
        public void traverse() {
    # Y* x1 ]! V# _! V4 T3 E        if (elementCount == 0) {) t5 M' h# G2 F% j3 J
                return;
    1 n, ~; p. n, l& ?8 T        }1 F1 J# a. V* }& P9 _
            for (int i = front; i <= rear; i++) {
    0 k9 I9 E2 @: D3 j            System.out.print(element + ",");
    + t5 G) t2 T9 F) T* P: t6 X$ l4 X        }
    $ y8 j: M% e! Y5 z2 b        System.out.println();
    3 L) |" D% `. }5 x  f9 H. c    }/ O& m" `0 f3 N9 @
    }) [2 N3 X  ?' I
    , u" \% D/ Q' B- Q: c
    4 E3 d! s) w# g/ O# b/ s* r4 s8 j; I
    3、队列的测试
    ) @3 {7 s8 ~8 L' Mpublic class QueueTest {
    7 D& B, k' {. B: g: C    public static void main(String[] args) {. D: H/ ~2 r, }7 B) z
            Queue queue = new QueueImpl();
    , O0 U0 s) o! t3 s% x) x
    1 k4 r, R4 t) [; I        //获取队列大小
    ! r" j- E  `2 K% i8 Y        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    5 m: K- C" j) }% x2 w- R7 X8 E+ L/ v7 c2 O4 J( |4 M
            //第一次入队列:压入1-158 J4 M1 n( b" v. w9 R
            for (int i = 0; i < 16; i++) {/ l. \3 r  v# c
                queue.push(i);
    + o0 F5 C" L6 [* ~% j; J8 Y        }
    9 B/ Z, n- w9 t7 R1 Q        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());& @8 D) r* l9 z1 N
            queue.traverse();
    4 h) z) d9 i6 L; Q        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    * L( v/ M$ B! J" b7 }0 I2 R" `8 R  y; S( C, \; K
            //第一次出队:取出0-15
    , h. N8 N7 z0 H        for (int i = 0; i < 16; i++) {
    * W) C" F2 y- b. g1 o; G            queue.pull();5 t2 Y( k( J& L1 X0 D3 G
            }" [/ k# v) E* p& ^4 ~
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());- ]8 g: r+ E7 E' T" E5 M
            queue.traverse();
    5 A1 N  Q- U2 F2 M) K$ |, C        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());1 }, P/ u. J  M& G( h% u

    ! L1 V# I+ E7 o2 [$ R9 i2 b5 K" a# y  m1 f
            //第二次入队列:压入16,31$ Y$ W) Q0 [8 M. S5 L
            for (int i = 16; i < 32; i++) {- i; P. O# I4 ~( D8 l2 o
                queue.push(i);5 f$ ^& d+ |$ @8 L
            }
    ) [4 K! _- F. Y' C        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
      v, h5 Z8 X% \, Y        queue.traverse();; j6 R$ Y9 J7 w$ p8 ?) n4 {
    # \2 `$ `9 f. Y9 w' R4 O
    ) o2 t2 c" e; V; e( }
            //第二次出队:取出16-31' I0 p4 ]* T. p$ F: g# |5 B
            for (int i = 0; i < 16; i++) {+ K8 ?/ S  z0 A7 n2 H
                queue.pull();, I2 R0 e7 M% r- |5 w5 s
            }
    0 M: o- V+ e& K- f! c8 k  _        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());, X+ ^  P: g3 a+ H5 |
            queue.traverse();7 r' v' \+ b3 _* g' v* g' d
      y; Z/ S' f' A5 t
            //空队列出队报错
    & Y+ F4 p+ z4 Q6 k- g0 l; ^        queue.pull();
    : P% p: P% s( V" |% ]6 H+ x) n- Q* F) Y+ Z$ b
    ( k1 a4 h8 v- _5 S. @/ J& N4 L    }
    " s8 w& `% M4 C& c( s4 e}5 w% t' b  G; d

    " E* _, E  o) t; j% A6 j# Y6 L4 b) x* i$ X) s( X0 r8 x, b

    % r1 y% O6 k! U% U7 n/ e8 I9 `
    ( g0 b( `* o0 J, u" g, ?2 y$ y
    : z/ S! {- h) T! w0 l. V/ d* h
    & E0 I7 l8 K5 m
    3 W- R" m7 }  z* T/ h0 A$ [" i& G
    : J* w& J0 A% R* p0 W5 i/ a$ y& c' X

    $ \3 p+ x8 K: Q. C; C2 {
    - t+ }% C6 D3 S1 Q" y* b# w
    / ?4 i4 H1 C. y5 f; t9 F, E0 v/ f, s% F. Q, z/ h  ~3 U9 B
    / r5 J( s3 C2 h: ^6 M3 ^

      z7 N4 m5 O, x6 z; L( S————————————————$ G% @$ v4 P( K$ ]9 U, \! Y1 b+ Q
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    5 a% c" u: n  }9 b. n) R; f  h原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    8 \8 U6 s5 c( J* |5 _# C3 o, C7 S4 V8 ^& R( d6 y$ J$ u9 i

    $ I9 a" Y% U8 p/ C  v9 D% I8 g
    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, 2025-8-21 09:51 , Processed in 0.450835 second(s), 53 queries .

    回顶部