QQ登录

只需要一步,快速开始

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

    6 c, ^7 D" X, S! D/ @3 z' A数据结构——栈(Stack)与队列(Queue)的手写实例
    , t# ~* o# F+ L) v+ J# R, e$ J. a7 n/ S' g% U: }; y
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      ' m4 n& p* k9 {. R
      • 一、 栈与队列的定义
      • 二、 用数组实现栈# a- n/ E) N8 f5 J6 @/ U7 |
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          9 N' r+ ]+ n" D
      • 三、 用数组实现队列
        ; [+ y6 G; V) w0 k/ L4 `  t+ f
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          / v8 i) J' P2 H! j
    " p, {1 Q# I4 N9 }

    9 @" N$ u) e! z- a; }7 Y& X- f一、 栈与队列的定义
    6 o- o. u( i7 s! t0 ^7 L  w栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。* e0 m( P5 O- C6 ^0 @  [
    1.png
    . K) a: C7 G: b( U% s$ f0 \  u 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。; e* g, C- A; `
    2.png
    % K2 f6 a7 _) b/ k! y, s: \; z" x2 F! {+ x, m( d
    0 ?9 O& a5 h9 P4 S% g
    二、 用数组实现栈1、栈的接口定义
    - T" Q" m( f) S; ?* V/**) N3 M! T, ~# o! Y! Z& V/ n1 E
    * 定义栈的接口
      }" X8 o) d- j' T6 `0 o  D" Z *
    6 J( U$ ~& E- a( f; d" Z * @Author zhuhuix
    ) c7 E( g  k# n3 G0 i6 {; j * @date 2020-05-01
    ( T  b( ]/ _+ G+ |. T% ?1 Y */
    # g3 y& f7 c6 Epublic interface Stack {
    5 z" Q$ y  w2 }    /**2 I3 E) A, D% U0 \# [
         * 入栈+ K0 A! P: P" ~, D! D& L
         * @param object 入栈元素
    ' \: ?( S6 f# \$ k  S5 N! M     */0 `" x: S: T  N3 J
        void push(Object object);9 b# E7 i$ t1 {& T3 g  l( m' k

    * ^9 T6 T6 l0 y, ?    /**
    ' u8 ~; A6 O6 ?     * 出栈
    / L* @- v% r) I% v& i* b     * @return 出栈元素: m5 Q! s9 R$ {
         */
    2 R0 K. f% m4 L: g    Object pop();8 a1 Q+ H& U3 A. ]) l
    * t5 \. r4 c/ g( |
        /**0 I; Z" y" K# A, ]
         *  获取元素个数
    , o& U* i# `, |. j( L' ?$ L     * @return 元素个数  o8 w+ V5 ^: T; |
         */  S* s/ s; a% M9 H8 T) e
        int getElementCount();
    / s/ Z" Q! x1 F' r; }$ f5 w: e+ {5 G3 ?
        /**4 u( x  L0 m! b- Z( ?! P1 Q
         * 遍历栈的元素
    2 N% K6 Z1 A- \; W! E) n9 c' Q- _     */
    8 S  E; c$ d5 E6 d1 F% C' Z$ N* E    void traverse();
    3 X0 x$ p- S% O6 b7 z8 ~9 N( V8 k, z% ?0 ^
    }
    # G) `% [6 T* Y2、栈的接口实现
    & @3 T3 D& ^( k' u0 D: n/**: b8 V  u& ~: p6 }; W& c3 K5 E2 l
    * 栈的接口实现7 t: E; ]; J9 y, H3 f. q
    *
    * c6 k* |2 T) @% X. l& `7 l- k * @author zhuhuix
    / Z, f, }, v3 y) S( U, L/ _ * @date 2020-05-01
    9 n# W* X4 j3 e0 @1 [+ l" A */$ w4 O) x' C1 T, P' w9 D  c
    public class StackImpl implements Stack {( X) n( c0 i& S2 q% V
            , N% w: ^& _& K% p& A9 O/ L
        protected Object[] element;. _1 |5 F) l, [1 x% o4 P0 n

    ) d7 S% r" Q) s# A, C# w    protected int elementCount;
    1 e" J2 i+ S  i" A, q
    ( `! S% B0 ~- k% G  d4 j    private int defaultSize = 16;
    $ z) @. Q4 u+ s5 H: E  _
    + P/ A/ p4 `$ u( b  j/ d    private int maxSize;/ J6 _3 V1 S. z( ]: }

    % @  a" q+ `5 s" V* L    StackImpl() {
    : O1 a2 f; g. M$ K+ e  O4 ^8 U        element = new Object[defaultSize];
    1 U- b% f8 Z8 k0 Z7 e( y( u5 C        maxSize = defaultSize;
    5 ?. Y0 b$ R& G    }# m' J) P0 `: H) H) ]6 b
    ; B' v$ f; L& {1 Q& _  k% b1 e
        StackImpl(int size) {
    : {/ L$ f$ e0 I2 a7 \5 D        element = new Object[size];
    3 D; t2 C9 t- }: ~5 C: x/ C3 v        maxSize = size;& g* `" E# q$ @8 v
        }
    3 i" m6 Y" S, ]- }3 ^6 c
    ' Y/ t" m. {1 @, B3 q    @Override
    ; Q# k, y  L) j+ W, _, Q    public void push(Object object) {5 T& m+ m$ S& m6 q9 O
            //如果元素个数已经达到数组的最大个数,则进行扩容; L+ Z. J' ]7 K2 _
            if (elementCount == maxSize) {
    3 ~4 a( Y2 _( t9 [! _  k1 k0 ?" a( q            element = Arrays.copyOf(element, elementCount + defaultSize);- C0 ?# D" g3 Z/ [5 I/ Q/ \: {
            }; ^& Z# e9 w: r% [4 P  s- A
            element[elementCount++] = object;- s/ _: m+ @% e7 C
    + b( ^6 K7 ^6 S, S# }
        }( H5 j: r/ T/ U
            // 本代码未实现数组的自动缩小,具体方法可参考JDK( ^0 z# g) v' `3 N8 O6 \
        @Override
    7 d4 ^- a' C4 R    public Object pop() {
    0 ~: e0 N: l7 S2 i( u1 S        if (elementCount == 0) {
    & ^* e4 e" ]) S0 O$ N            throw new ArrayIndexOutOfBoundsException("栈中无元素");
    & b* m, q- F/ v0 m/ j- ^        }
    3 o. |. m6 w/ V5 l" O        Object object = element[--elementCount];
    & w1 }9 C) W$ T1 w) Y        element[elementCount] = null;
    : S* o6 F$ r. K" d3 o6 u; ]        return object;
    7 P: A1 K% y/ b4 k    }
    ! B; m9 G( U5 R+ J8 ?  W! I/ W' k
    8 z& Y9 ^9 a. z    @Override
    4 _8 S1 D/ D4 X2 l" w; N    public int getElementCount() {
    / e! f& y# U$ T- i  _        return elementCount;2 Q4 S! Y9 v) [& L9 {$ b. `
        }
    0 c4 X- A: g( M. p0 y2 }, V+ z" a* {) E8 p& y3 K
        @Override) \$ P8 C( l* K& m. U
        public void traverse() {  Y1 D9 J  C2 P1 {
            for (int i = 0; i < elementCount; i++) {: D; x1 Y2 K+ Q& P
                System.out.print(element + ",");
    - v3 \- q/ J+ n3 d/ R        }
    9 j9 F' f/ T9 C/ c5 O2 }; X; j        System.out.println();
    9 j: t, ^4 P8 a    }
    . l5 c4 R3 E7 j0 b& {}
    - H% V+ [8 ~% c+ }4 t6 Q% |" ?" t3、栈的测试9 f+ n! {2 L& n) {/ E. w* I
    public class StackTest {
    & \/ P" d4 [9 u    public static void main(String[] args) {  l+ G8 C$ J. r
            Stack stack = new StackImpl();0 h' g  ]- z6 P! S5 |* \
      S' s" @1 Q: N& k
            //第一次入栈:压入1-15
      h! ?8 n* b, V0 W        for (int i = 0; i < 16; i++) {
    9 j' @) u5 d8 a; u3 |* E6 a* A            stack.push(i);
    - }# R5 O7 Y8 ^2 E% j        }
    ; g* ]% T* X; W2 D! |        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());& N3 }) t: `" m. J$ x% }
            stack.traverse();/ K& R' ^' v" X8 b9 u8 D

    ' U6 N3 Z8 J2 V% B        //第二次入栈:压入16-31* z0 Y; P8 S" C: k
            for (int i = 16; i < 32; i++) {
    1 e! x" G* l) i1 }            stack.push(i);. m% q  U9 W1 c
            }; E' s: i1 _$ W5 P9 x4 C) X
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    ; |4 n$ }! N' H7 c( W* s% E        stack.traverse();- T; c3 B, J2 R% z( p2 R! \

    7 Y, p& `; h$ u# m  O8 [8 P) V/ ~        //第一次出栈:取出31-16  ?  v5 h* g/ v. b7 w- l6 l! O
            for (int i = 0; i < 16; i++) {, _  ^& Q- V2 x, C* L2 I6 P0 l* U: }
                stack.pop();$ }2 F( l3 W+ {9 F0 S4 [
            }
    $ b! ?8 D, c; N1 u        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());* T. J" t3 H6 Y& j. B$ Z& W, e
            stack.traverse();
    - W5 Z2 a9 G9 n( S5 m9 U/ ?) E" k2 H% g0 k# y
            //第二次出栈:取出15-0
    2 f% T  J# G5 ]8 G: g0 r( a  w: q        for (int i = 0; i < 16; i++) {: P, V5 M, f8 n% K' R( X3 y, r
                stack.pop();
    " V% S- l' r3 k' k6 a5 p. |        }! K" Y8 l: w8 T- Y% D) D
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    * y8 t3 B4 l1 f" p- B        stack.traverse();8 w( G% r1 \+ L) N+ h9 w5 E6 _; j

    0 w( Y; {8 g8 a* V6 F        //栈中无元素,出栈报错4 ]" Y2 Q& r7 U- x
            stack.pop();* H* ]6 y2 \" C) o7 y$ ^+ Z

      I2 ?* [1 C6 Q3 x3 k: E    }
      O5 E4 H5 E. m8 G. b3 d/ |}, z( O) d; @' v5 O6 `8 T
    3.png
    6 q4 D* W7 Q6 B& N: e5 R: S) p' c, d% Y* P, \* z( E" C* P1 n& d
    7 G8 y. q* f# {! @

    ! M+ l  z- ~& Z# O三、 用数组实现队列1、队列的接口定义
    - E6 K* L) \; Z1 Y% h  E- d% h/**7 \8 M; u2 Q% O+ D3 E% P
    * 定义队列的接口
    " S/ \' b. R, l$ O- D  L *- F* Z. x1 z# {: r. Y/ g# d2 M2 q
    * @author zhuhuix+ j1 T4 L; ?, \: r
    * @date 2020-05-014 m" Q7 J# j0 {
    */
    : [% j8 X" V$ [% fpublic interface Queue {
    9 S. i7 i0 o: @; f
    ; t- ~, h  T* d8 `8 R" G    /**" `! E0 v/ u' S' z; N
         * 获取队列大小5 j4 Z& b, c" x( I: d' R5 {
         * @return 队列大小5 }+ z! Q; m1 i. x0 V
         */8 L9 _& p, F7 y: L# C8 [1 L) ?3 |
        int getMaxSize();# g# W+ [8 z+ Z/ n
    ' J! l! Q+ k8 P$ `2 G/ m
        /**
    + N7 V0 z) M/ P  m! H5 R9 W! ]) }8 x     * 入队
    9 F* |' _1 `4 L1 H; v- r$ ?8 ]     * @param object 入队元素
    % f8 G6 i8 {- z7 u1 }  m5 ~* ?     */) I1 B1 V. A: a( r- p
        void push(Object object);
    $ P% _3 f0 W# O' O5 H2 O7 \' H4 J) v& R) X
        /**3 h# C' j6 j6 t
         * 出队; w3 m" L8 _) R& r% c* v
         * @return 出栈元素
    0 J6 Q0 R6 g0 T4 s2 B  b4 R9 w     */" r1 l! t( k$ N. _5 j' R
        Object pull();
    6 X. n1 [" P9 ?' }. s7 d/ `: R. `" o
    . m" u+ Y6 s  b9 A& ^' C! \+ q  U    /**
    + G6 E! U: a! R     *  获取元素个数
    - }( Z- K2 [# R     * @return 元素个数
    . A4 c  a( R/ w5 ]     */* V8 }& h0 D# u1 Z
        int getElementCount();
    : d$ c# `( a, l- x) I& k2 Y
    3 M1 O6 g. S+ Y7 E6 x2 i* S    /**
    4 q# e& x. P% D5 w2 i# A% u     *  获取队头元素( ?* S# ]: w+ w+ g4 D8 q
         * @return 队头元素
    # R# ]3 i2 h+ p' ?     */. Z- `: d. U3 ?2 ~" w& t
        Object getFront();
    ; f8 a) F  ~5 n4 e1 Z$ M. Q# L) N, w; V& n) v
        /**
    4 T& k3 [; V: ]" |$ x" @     *  获取队尾元素! F* a: N) A4 N! ^
         * @return 队尾元素" j$ |' q, H+ c! d2 A8 W# [
         */
    ( X7 m: C8 Z8 Y6 A3 @7 g    Object getRear();
    ! U" o( E+ I& J+ c3 O' o4 T4 Q
    : f. r& D* R  p6 {/ M/ H* J    /**
    4 g$ ^4 h; m+ o& j- E     * 遍历队列的元素
    3 |' a2 ~+ k7 j$ U/ Y; M     */
    - _% M! |1 i. Y0 S: p    void traverse();' k7 j- |5 ]# }6 r2 Z& C) W
    }
    # D  j9 M6 i2 q& t3 G0 {% n0 g2、队列的接口实现4 r6 H# M1 E8 Q0 S& T. p
    /**' O$ E  V7 V" ~8 u+ a! z
    * 队列的接口实现
    5 e8 @9 ~2 x* T/ L/ @# u *" L+ W  m, U8 B) @
    * @author zhuhuix
    " E" ^+ e  E4 n9 [4 r * @date 2020-05-01
    - T6 X; r  [1 n3 f! B# M( Z* k" u */
    7 H- u  |" e$ e: K% opublic class QueueImpl implements Queue {
      y! ?/ X. S- p
    9 ~. F  U% m; I) d1 j$ d0 f9 }% [    protected Object[] element;. \) x7 E$ M7 G! L# s' }1 r
    ; R* i" O& m8 J7 n& }, W* U, T9 Q) W
        protected int elementCount;
      \' S+ c3 A; B& n* l/ i$ b# C! q; N* U; e" Z* q
        //队头7 g+ m) S8 r( J$ P: R- Q- w1 Q: Z
        private int front;- B- _; ~  A# o# h$ I0 ^6 R5 {
    / E/ L) W# P: K; M0 L# {
        //队尾: E. ]( T0 ^4 q6 v! l
        private int rear;4 |4 I: X) }) s3 h

    $ O3 d" `! W! n" |! `: ~    private int defaultSize = 16;5 z* I3 D5 r) h: n
    8 L( E% e& ]% k8 H
        private int maxSize;" ]* B6 e3 R7 m" ]* J4 e

    0 ~6 t4 A$ F( }* C$ v    QueueImpl() {, h% h/ `( J# J2 F1 h
            element = new Object[defaultSize];7 O, u/ R) C; |' }5 c
            maxSize = defaultSize;8 H; P* {4 J- ~0 v& Z
            front = 0;
    9 e: }- n+ b% q' t/ s( m9 B        rear = -1;) H# I# z0 U3 A, Y; b
        }4 V& D6 ^: y# m
    * s4 C: D* ], p6 e& t" R
        QueueImpl(int size) {1 e0 W7 ~/ u8 R
            element = new Object[size];
    $ S* ?8 p  C! P4 j+ ~( `        maxSize = size;
    # {; p: d% g" J  n) n        front = 0;
    $ a- G% n# c% T  G' x! I        rear = -1;
    # R. [& A2 y2 |0 ]/ y* H    }6 n4 l, W0 J! P) m( e

    # h& K# e' L5 c" b    @Override
    ) U& D7 k+ m4 r/ B    public int getMaxSize() {
    4 ]; |) G1 g# D# `- }7 R        return maxSize;# t$ R* }& H% N- V3 N
        }
    3 k% Y1 b5 O1 f. t# i, }1 I* r/ C$ ]1 q" W1 z& V4 i" E( K
        @Override
    2 ]6 Y) L% e$ G$ i    public void push(Object object) {
    3 n1 d% b- j% }* ^        //如果元素个数已经达到数组的最大个数,则进行扩容7 W/ u: l  X, d- W* N* K
            if (elementCount == maxSize) {
    ; a7 j' P5 j- A/ q$ _$ t" `            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    9 p% O3 N9 e2 H/ {" {        }$ f! J; |8 J! l) `0 w8 @
            element[++rear] = object;
    8 S' _  O  O0 K" l% c& Q$ T        if (rear == element.length) {; M9 P9 j. K+ M# R( |" }: y' O
                rear = -1;: e: f5 Y! B+ B: ]) {0 h
            }/ V7 C! h% E/ c
            elementCount++;$ H: c6 w* Z# n0 d
        }9 z# k; O: }: |* M9 `: m$ }5 v
    ! m' j' o% [& W' R  U' ^$ f" d3 M
        @Override
    1 [1 B: D+ n/ `0 g5 b8 g  A* p- P    public Object pull() {
    2 M& e# N% t1 g/ j" l        if (elementCount == 0) {: h/ \7 U! F  B) ~' k! x2 e( y/ L
                throw new ArrayIndexOutOfBoundsException("队列中无元素");% S+ m* I/ A* p# m( V
            }; d* T% A, L9 V  f' _
            Object object = element[front];% b3 H& m9 ^  Y8 E+ @% G
            element[front] = null;) ]) r/ i+ V7 \2 M0 d
            front++;
    5 k) }5 a, ~2 ]" C5 u7 _        elementCount--;- `0 p3 p( }# v, X
            //队列清空,队头队尾恢复初始值
    " X( o2 E# u- S9 j- H4 F6 M" o        if (elementCount == 0) {5 c2 L1 b2 C7 R0 Q
                front = 0;
    - w3 v9 d9 ]) K: s; v. P7 b% V3 ~            rear = -1;6 f5 T6 ?) F1 y* ?4 A
            }' [# ?6 z! ^* W# ?& \6 o! g& X  E
            return object;% c$ O0 d( L$ p" d" M# S' e9 C3 I4 }
        }
    1 Z( J$ }6 I6 c2 S  a* e' @/ E
    0 X0 ]! j; I3 i0 L    @Override
    & i5 z8 b5 Q  m$ K: t    public int getElementCount() {
    3 T6 M' {5 i; m3 e7 T' n& a        return elementCount;
    : Y5 w4 M5 I) h/ Q    }
    3 w% J9 p: ~6 k. l/ p! {/ h) _; Z1 ]6 S' A3 u7 [3 Z: v" b& x  i
        @Override& }/ t6 a. R6 v9 z0 ?3 I
        public Object getFront() {$ z8 F7 K4 L0 ^+ \$ i3 n
            if (elementCount == 0) {
    6 b! J. I# R5 S* \$ w8 B0 z# b8 M            System.out.print("队头无元素");9 D: p3 q) K! `  m
                return null;
    $ o/ ~( D4 L- o8 O        }6 a- O+ b" S2 W9 E3 [* X( z# P
            return element[front];5 Y( Z0 q' E1 N% ]1 g) q
        }: A4 R  C* f- ^2 N9 L$ o: @: m

    0 S' p6 B: ?  T; m8 H- z+ ?) t6 j& h    @Override
    / C( Y- B! \& R( q    public Object getRear() {! T4 r8 T& A! M5 I
            if (elementCount == 0) {
    & o4 @" S+ F6 x, W. S5 m! \            System.out.print("队尾无元素");
      D9 l  G: B$ S' P/ J2 [* \8 v            return null;; @; a6 b: @7 A0 G
            }4 p3 {! ?7 }4 y: D2 }" n! Q
            return element[rear];4 d$ k6 ~) f3 u6 @% B" n
        }! W1 Q! y3 n! T- L% `+ g* `
    . f& Y. Y; C/ o( w
        @Override
    / E5 ~% F; [2 Y/ t  Y( t: ]+ V$ _    public void traverse() {( U; T0 A: {( e( K0 `
            if (elementCount == 0) {
    : h& E$ a- w; }            return;3 }0 E8 L% x, x; V( T, }/ v
            }
    * M5 G) c# j. ~        for (int i = front; i <= rear; i++) {2 b" i. Q: p( f& n$ f
                System.out.print(element + ",");
    1 y) p! o, H% W# s- ]$ ]% _& p' |        }
    - z! F+ N4 H, ?& N2 Y        System.out.println();, H% f* ~% d' H# ^
        }
    7 v5 J0 i/ R, M: E}
    & s; Y- K* O3 N  ~7 u" S5 c& o5 j% {2 p, V
    - \5 y5 w. E; |+ j
    3、队列的测试# a2 d1 L0 P* ~# W4 m
    public class QueueTest {
    $ I* K  ?8 V6 ^/ h    public static void main(String[] args) {% B8 p8 u4 b! b' @0 w
            Queue queue = new QueueImpl();8 B7 i9 g+ t, ?, C7 H& x
    0 m- X) J/ D2 q4 C
            //获取队列大小
    6 U0 B$ [+ `/ w. R6 b0 R3 s        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    % R! Y- A9 h5 D: c# v" z0 k1 @; U5 ^- i! ?. i, s' @1 E6 H" S
            //第一次入队列:压入1-15
    - i. x. S0 g* D; E- K, q, g$ g        for (int i = 0; i < 16; i++) {9 H; U5 p( z6 p4 b
                queue.push(i);
      K: m! K2 t  ?2 e( ^/ w! r        }
    , A$ W7 @9 ?% N1 A- f        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    : o* H2 E& K# w7 {6 \) H5 z: i5 z        queue.traverse();
    ' T' H4 g8 L' h9 v2 ~% z        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());$ X' E8 S; M+ k% j

    - U& U3 X7 b) D9 G" q1 z& m" `        //第一次出队:取出0-15
    6 t* U6 ~! m' C5 d% R        for (int i = 0; i < 16; i++) {3 X+ P0 C1 d' Q. ^$ n7 s# n9 F
                queue.pull();. N  \2 W* r6 P  r- ]! i- T
            }
    8 Q/ Y1 P3 U, U: v: F, W% Y; K. A  d        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());: C, M) q8 r8 ^1 X
            queue.traverse();
    2 P4 A5 }( o6 w2 }4 [        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ) e  L- F0 _( m; R# F4 l' _& f. A( p0 W3 d

    2 E" y0 M  @: n9 {0 P        //第二次入队列:压入16,31  ]+ X% B& p2 G9 v6 U# o# X
            for (int i = 16; i < 32; i++) {+ b! z* m( o# w6 M- C' [: M& s
                queue.push(i);
    * S$ A  i: `" Q4 o  j" ~, x        }
    / i5 W3 c; c% g* x        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
      O! T6 d( H$ i( v. m, Y! |        queue.traverse();# l' ^$ o! |+ {' Y. m

    - _4 a7 |/ W: d# Y' U! G. M
    9 l( H' L! S3 ]: B) T        //第二次出队:取出16-31
    8 `; H% e4 X$ a$ z( N        for (int i = 0; i < 16; i++) {
    : p$ s8 e, z7 T$ T; Z! b            queue.pull();
    5 e# v( w2 v. }' K! k        }
    ) {  \8 e- Y+ Z$ n2 Q% O" @  A) J        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());! R7 K- W4 G/ c4 e& C
            queue.traverse();  Z* T: K; C2 G1 W$ u, E

    0 c  Q; [4 D0 g1 @6 ^5 ^        //空队列出队报错- c, c' K6 c& h: F4 H' ^5 F: B: T
            queue.pull();
    . ?3 e7 D- F7 H' j) u
    " H1 I- @$ d: L+ d5 Z( e9 F' P( e    }0 A! C3 L5 {  I4 M& E, \7 X
    }
    $ j5 }) S' c) S% O6 K5 [* A+ E
    % h& m' o5 Y; I/ I" e) J! s; B
    5 X  a; q7 `: [) ^# R9 u: O4 q" \* a$ u- q( }: L( ^/ z6 W" z
    ! Z1 g7 \( |. z

    * e# R4 {' T* O
    $ ]0 J; L+ L  @6 p) @
      x8 ~7 V- |: j
    1 }5 l# f% E8 V$ k5 M
    ) a% I7 M, Z0 l' _) c6 o& }! S- b9 A! P0 \
    # P; Q" _, G. j, K: E7 {
    : P1 N  Z5 z2 z; l/ |- `

    7 G- q2 I& ]) ?) V5 O) }; [0 v7 X6 q% g

    ) K" g5 P- q& Y& H————————————————$ ]2 b, q7 S# j( l0 M
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    + r1 Q0 r* b0 k2 B+ ^: Q: a原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    : I1 `  v5 b5 I7 c4 W' W2 \9 Y7 i9 d! E1 C! b  v7 ?

      K. ]3 K% j$ n& A9 ]. J
    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-28 06:01 , Processed in 0.412466 second(s), 54 queries .

    回顶部