QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1683|回复: 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
    0 B) n5 p9 @* x8 m1 w
    数据结构——栈(Stack)与队列(Queue)的手写实例$ x1 N# j1 Y" b
    " o: {! D$ s4 C1 y, s; Y
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      & N) g6 E  b$ M4 l7 Q& }( M" Z
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        , q. W3 P3 ~8 q% |; ^
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试2 Y# V0 `. A" k# D: o5 \6 F. }
      • 三、 用数组实现队列* y5 b6 `7 v" T9 X  o
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试! d: F- [# q- T/ |, W" w/ u" }0 q

    : x7 n" i# M  D) k4 M( ~/ c( k% o! y2 o. {
    一、 栈与队列的定义
    & x4 `6 R$ R2 ~/ i4 {栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    ) b/ D/ U; u% d1 A6 e) ]. a 1.png
    ; Q* u+ e! y/ ~, P 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    ) I$ F7 G. I  G) i* x$ I! Y* P0 E5 r 2.png 5 Z: R" k9 p+ w& i8 T1 ?
    8 n) E; R$ p9 b. d) n0 _

    ; O% U6 f3 i- T1 o, e1 j$ v二、 用数组实现栈1、栈的接口定义+ h" H) _2 q; @5 s# ~: p9 @  @
    /**% O% O$ o# Q7 H1 J8 D
    * 定义栈的接口
    * X' S8 T2 t% {0 g+ I *
    & g, O0 @* |% g; a( W * @Author zhuhuix
    # f9 W- @, H  i# y * @date 2020-05-01! i. b  I9 @. u% C$ _& H6 Z* r0 w
    */6 d; @, k7 d* B% Z3 t5 X: m
    public interface Stack {; m& \4 I5 c9 r
        /**
    7 j; O% z/ ~4 a8 `; U2 ]4 s9 s2 h     * 入栈& [% R/ D( i5 i9 x4 a- U
         * @param object 入栈元素! C$ l' a) b' p8 F! R  X1 N+ U
         */
    ) V- g" e: ]- q& J    void push(Object object);- c# P* Z3 u3 \& j( U- C

    0 F4 @' ^/ W" x1 l: v& C    /**
    1 n1 o' c' o$ f3 ]     * 出栈
    6 G; U6 T$ ^( O  {# J     * @return 出栈元素4 C6 }6 i7 P, X; i7 L
         */1 Z) R7 M: C- \
        Object pop();
    ( a! c  U4 G# r2 _9 d) c5 ?* C7 N4 Z7 m* v$ i
        /**6 t, E% }! _& \; p" e
         *  获取元素个数
    6 `0 e: ]9 M: p0 p     * @return 元素个数! u4 P1 s. m+ ?) _; Z
         */
    0 N- L0 Z7 _  o4 o' X$ e    int getElementCount();  I3 C0 M: ~' p
    - h$ _! {; L/ x8 |" P
        /**0 V* Z8 j. y+ }  ~
         * 遍历栈的元素- s/ K; [$ e7 e' J5 k
         */
    + y7 j  ^" V# v1 s6 U' ]/ T( `    void traverse();, i1 i+ T# o$ h0 x) m% }

    / C8 j; B. w: d+ f5 ^+ ]}* `4 j0 n7 p' R' V+ m
    2、栈的接口实现  d* T, j9 \7 d1 t
    /**
    ! H# P% d* Y# e; M) P' x" E& w * 栈的接口实现
    , w4 l6 i% T3 Z; z# j& Y *% d3 L; U& F" n
    * @author zhuhuix
    4 b* ~: P+ E3 G5 T: v * @date 2020-05-01  k3 a/ l. Y# o& k
    */
    ' W% I/ V7 D6 apublic class StackImpl implements Stack {# L- K" m: ?1 Q  s8 l2 R* ?
            $ E8 Z+ o6 V+ B0 ]0 u. k
        protected Object[] element;+ C7 E# R$ k9 d8 y" [
    9 N$ `% |; Y& Q4 n; q1 d) U1 e
        protected int elementCount;" A+ P# c# F  |
    5 J' m3 {0 K; v6 n+ g1 d7 V
        private int defaultSize = 16;
    " W) I" \; E% F  Q
    1 `/ G2 C! l1 |# P5 G% R1 @; W  d    private int maxSize;
    5 a3 f7 {2 m9 M* U7 |" M0 D
    0 W. B$ u6 k6 ]* n2 Q9 f    StackImpl() {
    $ {2 Y9 ?! x( f# d9 x0 i6 j# k        element = new Object[defaultSize];; ~, o( H5 p2 \1 I  X* m
            maxSize = defaultSize;
    7 i" l5 l! b! o    }) ^" H7 Z9 t. K& @2 _

    % a) P  ]- z8 ?/ u* }! ~$ s    StackImpl(int size) {
    ; e, {+ h! q0 P. T% X$ L        element = new Object[size];
    . ]  D5 x/ m/ m2 t5 ?        maxSize = size;$ c0 i4 B4 B4 ~6 q
        }
    1 f1 Q* t: O1 F( l! A. _# P; n1 L3 d" @1 U
        @Override) {* W; C! z. n/ P% `9 h" F5 T
        public void push(Object object) {
    8 M! k" d0 m9 b) r5 B        //如果元素个数已经达到数组的最大个数,则进行扩容/ S% N# _2 l( @0 q
            if (elementCount == maxSize) {" h3 O3 B% K+ D2 Q( O4 M
                element = Arrays.copyOf(element, elementCount + defaultSize);
    " C0 v" g7 J  f$ o        }5 T; E9 R2 |" O" E
            element[elementCount++] = object;
    ! s* J0 O& |+ Z, q& {0 {: z8 D) a: s, P8 \0 b
        }8 A( ~/ Z$ a( P) H$ \6 w& C
            // 本代码未实现数组的自动缩小,具体方法可参考JDK& c7 v2 w( G# T' z9 E: S5 K
        @Override6 A* q6 Q& }& |7 Y
        public Object pop() {
    " X8 M  {* k& _; f! R' N; R        if (elementCount == 0) {% z  T$ D% b% M3 A, \
                throw new ArrayIndexOutOfBoundsException("栈中无元素");& j! |, G- Z. b9 r; g
            }% Z8 L4 e2 V9 _5 D8 y$ D+ }
            Object object = element[--elementCount];
    6 {! f) d$ x1 p2 g: z: V/ W        element[elementCount] = null;) h( \# ^) V# y/ D
            return object;
    # g" V* X6 D. Q/ Q' B- I    }
    9 L$ H7 m6 _6 J: W+ C( J  P( }. s2 F3 }$ z
        @Override0 h: q% {7 J, W( {
        public int getElementCount() {
    9 i$ W9 p! `5 @0 l        return elementCount;# B$ b0 V7 w, [0 @% y
        }
    " p% Z, E# Q8 j# m& P# T" J' a; D7 u4 @9 ]
        @Override3 n  e, q( {3 T, G( t
        public void traverse() {: ^- v1 S8 h; c1 q6 z) h' ~/ ?
            for (int i = 0; i < elementCount; i++) {( T" E+ @1 Y+ x: q! }. w6 ^/ j" a
                System.out.print(element + ",");
    4 Z$ k) G9 o& k) Q- _        }7 {8 A, _" |/ a+ b: E
            System.out.println();
    ! @9 B: O* Q9 P+ x5 V' s4 e- A    }
    0 c1 F4 Z4 q7 W% L1 c}/ P4 L. _# Q& Z7 w. `
    3、栈的测试0 S% `$ L! M& N" V& ?# B: n* C7 s
    public class StackTest {' T; e1 `* Y  |3 N" v) m
        public static void main(String[] args) {. l- c4 w) c0 ?$ k
            Stack stack = new StackImpl();, O2 p7 e' \3 Y  D1 L" |

    4 x: }6 r& C/ ^3 h' e        //第一次入栈:压入1-157 R& u+ ~. D! `0 _* M% G  f+ y! F
            for (int i = 0; i < 16; i++) {6 W' C/ Z- n/ Q4 d. M' X9 M  E
                stack.push(i);
    ) {# C. t4 x, \* i$ Q1 @: z- Q        }
    9 S( F. J/ M6 C' D8 ?        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    ; L" P( ^# M1 W- R# B# p        stack.traverse();+ K9 }/ |$ `/ g- h( d" B+ n7 M

    7 M8 _& R( z  \3 R; l6 ?  o( \6 H        //第二次入栈:压入16-31
    1 p' D+ D5 j% Q% G3 B" `8 {- Z6 A        for (int i = 16; i < 32; i++) {
    ( ^7 q; X. w, l0 P; J& O2 }( R            stack.push(i);
    ; b( n& d& t/ Z/ e        }! ]! p0 X! m# g0 b' T
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    5 c/ g/ l" `3 j6 a" E+ v4 g        stack.traverse();! n+ Z" a4 B7 ^7 D

    3 _4 u3 C* D0 n5 Y. Z/ I        //第一次出栈:取出31-16
      y' f4 a, U0 M: i( P2 @8 v        for (int i = 0; i < 16; i++) {( D% W# F4 t) a  k0 S0 [
                stack.pop();3 a- E, N6 `! c2 C2 N- d& d/ a$ D4 {
            }0 J9 A0 k7 H6 A. A1 q
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());- O+ u9 A/ ]5 i' J
            stack.traverse();
    " [$ W$ b$ N* t* D  o3 C
    4 A0 T9 Q9 s/ C% Z0 E        //第二次出栈:取出15-0
    / \$ S* B4 {8 e; w+ i4 u        for (int i = 0; i < 16; i++) {
    # U8 q7 E7 S; R; h- {- x# @            stack.pop();* e9 _' s1 {9 h% |
            }
    : e: n7 Q$ P9 r  @        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());9 m( {9 ?( @( O4 w$ j: E
            stack.traverse();
    5 Z, `) H$ I7 h0 l% u4 R
    ! J6 V: p, W0 M5 R) S, t$ L. J        //栈中无元素,出栈报错
    2 b( d: ^; V* u        stack.pop();
    ( G) J$ B& J# ^& [
      z+ H1 I9 f4 {1 z: S* C    }: O  H& k7 L  n) O  V) ?
    }2 k8 k9 V! H! ?$ S1 S* C+ i
    3.png 7 x1 G; N1 ~% j. \& d* G3 y0 y

    , m8 z' N  m, [: J
    0 x6 Y8 p- S; M1 e9 J, m! e7 Z. D6 r* H2 D* G  F$ G9 C4 R
    三、 用数组实现队列1、队列的接口定义6 i! C2 E1 @! M6 c2 V1 `( }
    /**
    / E6 `8 C5 p! s, A2 E$ | * 定义队列的接口
    " }' w8 }) a; t0 w( B *
    % M/ R3 F5 r0 n# v0 D! _ * @author zhuhuix2 P6 k9 L. u& @  r0 _# V
    * @date 2020-05-01, C( J- @* q5 y& j
    */# Z- b2 N' L* v3 [
    public interface Queue {/ t) [+ O" I0 i3 p

    7 Q# u7 W; A9 l% e6 E/ S& `2 E    /**) t( Q$ g+ h) [
         * 获取队列大小, e+ o8 n) a% O* m
         * @return 队列大小! T2 f. N! T% d1 o& Q8 ]. K) U' R
         */
    5 I2 n2 |. K' v% I5 G* |0 K    int getMaxSize();
    , ]) l; Q' }& B9 A* c
    : i5 v- r- G$ O, |; D  E* G0 `    /*** L/ X& i( g$ v. [/ N
         * 入队
    2 n, g+ a7 q8 i     * @param object 入队元素
    , V4 y& M& [* N7 u     */, v( J8 j$ S" }. q
        void push(Object object);+ X9 @- |! q6 }6 W& z

    5 K: G0 w' J, K1 x$ [0 n6 w, }, q" F% G: |    /**
    & W8 b" v5 `! _' ^     * 出队- Q: {/ c0 F0 V% }9 o- M3 y4 ?# O
         * @return 出栈元素
    + C6 B: N/ S( {/ d1 g     */: H9 s( p& M1 X" I0 z) _  Y+ I1 c
        Object pull();% m$ V* U: z9 w: {9 Y2 d

    8 ^/ m! ~5 ^# {  o- d/ x6 G1 t+ U! \    /**! p+ r% j5 I( G9 E
         *  获取元素个数& }6 q/ B9 V- ^% V+ U; @5 h
         * @return 元素个数
    ! I2 W* i# r/ y7 w# _     */  S- s/ D# n7 Y2 b2 U; N) h
        int getElementCount();
    : f3 ?3 ?2 W5 h; x1 ^: g- [& `! v4 I, |6 t' p2 G
        /**
    - F/ T+ D# n+ ]! @0 l6 \! _: r1 f     *  获取队头元素0 `% H, h; a* S' n, E1 F7 A
         * @return 队头元素
    - p3 Q( j: O; O0 h     */- R' `  Q1 S& n
        Object getFront();
    3 a8 a5 H3 @% \# o' i6 B4 {& Z; i- x' V3 s
        /**( H7 s6 K, G- V
         *  获取队尾元素9 b/ n5 p) m$ t3 s) l; O$ }
         * @return 队尾元素* |- u0 w) s; o8 [3 }  W$ ~
         */
    # X& s4 ]9 X1 e$ w    Object getRear();
    ( g) O0 |; K; j6 D& C) ]1 H1 E0 e4 d7 Z" @- ^
        /**
    3 J) @) d* I: _/ a     * 遍历队列的元素: \; F+ T+ a( N8 O. H6 ^# w
         */7 g+ f7 p  c  m+ Q
        void traverse();
    6 X0 d4 ~8 R* L4 T7 e}
    $ {2 x/ f3 p# z4 Q7 [& C0 [/ }2、队列的接口实现
    ( K" d  R& N/ z4 n6 q. D; ?/**4 i) }9 T! `5 w0 _& v, `' k# L
    * 队列的接口实现  X9 z0 t0 t3 V/ E. l
    *8 i* ?( L( Q  U# R* G6 s
    * @author zhuhuix. R' }( u) m* j7 F
    * @date 2020-05-014 v" A) I" N' ^0 C! g2 C/ J
    */; b( J5 [2 u2 M! |
    public class QueueImpl implements Queue {
    3 H, n7 ~" E+ W% k% o1 X" Q% |* H8 [- g8 T0 T' Q! @
        protected Object[] element;; F. z& R9 U# x* }. F

    / ?* n  ?. a, V9 W  m4 C% G    protected int elementCount;7 _  R' L) J. B8 ]$ ]

    0 [" D  L3 c: y: |1 _  r/ A    //队头
    0 f* V4 l" O# y9 K) a& G    private int front;
    / M( }2 _( E7 o& t+ }/ x
    / ?7 A; s( |1 `0 U. y    //队尾
    + `; k. ~# B0 F- f/ L, m% |    private int rear;2 B3 T3 F+ f: N/ N0 a
    " D* W# J* W1 p
        private int defaultSize = 16;
    8 ]7 @3 S: a8 |! b* H4 B
    1 U: A2 v3 K* P    private int maxSize;
    . I& W; N# o* d' h# K5 ?
    7 D- ?  e- d% W+ Y' F; C    QueueImpl() {5 }  J4 Y0 A7 h- U! [
            element = new Object[defaultSize];) E, `5 s: y0 q, o* i3 Q# e1 C; y) ~* j
            maxSize = defaultSize;) D+ [) Y( L6 `
            front = 0;
    + s7 ]& T' \# {0 ^        rear = -1;0 ~0 b- H$ w; l
        }* z% N3 {/ Z0 h" E+ f
    , r/ L/ u& k/ W. Z
        QueueImpl(int size) {
    % a5 \4 M  ~, ~; [9 D# O        element = new Object[size];/ b' j7 |0 l# p9 f
            maxSize = size;- V! x6 S7 R" i( y; |8 x5 x8 O. B
            front = 0;
    2 f" U" O0 ]3 ]0 a( [( ?; q        rear = -1;
    8 m* O( s* E5 _7 O9 g( M+ z    }
    ! T* C, C* E: Y( O1 `/ H
    + U3 k: E8 L  C' |    @Override
    0 _" y0 W0 J! A' [    public int getMaxSize() {; s( `2 H2 m1 I6 Z2 M
            return maxSize;% O) Q. g* }. A) e( X! H* [0 ?+ T' j
        }
    / A" F  e0 |3 a$ k( G  ~' ?( Z
    + h- _4 w, @* V8 `8 k! h    @Override
    + U9 a* ]4 e9 I    public void push(Object object) {& }& d, E# c) `% [
            //如果元素个数已经达到数组的最大个数,则进行扩容
    , ?  V/ R3 u' s+ L& b        if (elementCount == maxSize) {6 Q& M6 v9 Y- p: e: b: V
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    , O- J9 _5 H; I# w2 x/ B        }/ m- x( s9 Y0 R1 v* I) ]- @3 G
            element[++rear] = object;
    + G& T/ i7 U- t4 Q# I        if (rear == element.length) {3 @+ v7 S8 O2 U* Y  V- h4 N
                rear = -1;
    + d  B7 b* ^6 p( g/ b        }* o9 N! L- H$ f* b; v$ C! S2 u
            elementCount++;
    9 _* x. k" x; ^0 ?/ @0 E0 \. [    }
    # b/ O- y+ t, e% ^" q: f2 T( y; Q) e% f/ Q' V  m
        @Override
    0 \9 u! k& `7 y- E* e$ ]; U    public Object pull() {! [) ^3 r( z* ~
            if (elementCount == 0) {
    7 y$ V) x8 Q5 d) d. s# h            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    7 Q7 k! \% O) o3 O( q1 v        }
    ) F. Q& i5 r0 \4 h2 w& w        Object object = element[front];; ]8 ~- g* \3 {" ~9 _  i* u, J4 L2 c8 K
            element[front] = null;6 J8 Y$ E. |( }+ U" f- M2 ~
            front++;
      A2 |, D, ]0 @; L. U        elementCount--;
    & }6 |4 ~. I2 A6 `% ^: G# J+ i4 T        //队列清空,队头队尾恢复初始值/ |/ S/ B  h. p' u
            if (elementCount == 0) {6 C  G+ c- H3 g, x+ o8 m
                front = 0;0 l$ C: a/ }7 D& ]
                rear = -1;
    & y* w6 K5 C( p8 t& t. n7 I        }: n* N" e+ S  R+ r" z
            return object;% r7 A6 u9 Y, e5 K; R2 V! d  F
        }9 D9 n: [& Y1 y! o( x( I

    3 Y8 q* L/ w2 A3 ^    @Override& v9 j* d7 a* s! _% m, F2 ]
        public int getElementCount() {9 y$ s3 n* R6 R1 p
            return elementCount;: J  w. p+ w8 H6 F. K- X6 X, @' F
        }
    & A1 P- V2 y/ l8 k8 Y  M0 s
    ! b: F: T3 u( v+ H8 n, j    @Override
    " ]& K( x' Z) S4 b+ p    public Object getFront() {! L: H, d3 w# H2 k: m& t! u
            if (elementCount == 0) {/ {6 V$ k) N+ T! r! s& m. _# P
                System.out.print("队头无元素");
    8 ]) Y# c) n) o( ~9 @! D            return null;
    # o& o5 s( z! c        }
    * s* d( y8 ]% |% i3 E9 F0 k- f        return element[front];0 c) v% i' @4 E$ A% ?/ U  S
        }
    ( t$ v) B- f6 C$ s4 D! `, Q' ^: `4 I2 G" m
        @Override
    0 x- _9 T7 w. v/ c  S5 i* e    public Object getRear() {
    6 O) S8 C# h0 z5 |; l        if (elementCount == 0) {; v/ N" [2 `; k) M# F2 [! K/ N
                System.out.print("队尾无元素");& Q# f# T3 k( b  g! a! o+ J
                return null;
    * N6 L9 k3 v) j$ W1 a        }
    0 [$ @& s" w) ]  j6 e* X  g        return element[rear];( s7 X' N2 c2 Y+ h0 q7 V
        }* m1 b! y5 U7 G4 }' X
      {7 [3 W  q% x+ D( S: Z
        @Override
    % N# t+ Y) C* T  t! E    public void traverse() {
    7 N1 r4 L" H, _. u* B        if (elementCount == 0) {& u" |" Z4 h4 o) h9 Z
                return;# L% t( O9 d7 D+ ~. p) T2 j! I1 t9 I
            }9 {/ N$ t* l7 p% M0 D  G" s: x
            for (int i = front; i <= rear; i++) {
    ; W' A- m: |5 _& {8 u            System.out.print(element + ",");
    ( Y) a* ]$ r$ ?+ R8 S( o* P0 P        }
    " ]* O1 b+ \3 q6 g/ J9 I  }" @        System.out.println();0 F* L$ ?! V0 X; a
        }- f) W# Z  [# R/ m! g0 G
    }
    7 u; A: f0 J! ?5 `3 y( _  G1 Z7 g6 }4 u

    , X$ G* N. ~1 r6 [& T+ E" L3、队列的测试+ |1 D* L9 w6 u7 I3 g
    public class QueueTest {
    & ~6 V! m. H  R, G: ]' J9 v% g    public static void main(String[] args) {
    % }" R: T9 h# E2 S' H        Queue queue = new QueueImpl();2 o3 M. B5 x0 [
    8 |# H; y1 r" j
            //获取队列大小  A4 x" c3 H1 b3 ~0 p* F
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    5 s! `/ p2 B& I1 f/ m0 F
    & V* O5 |' }+ b) {        //第一次入队列:压入1-15* e* u) m( e; L- }# }+ _2 O' ^
            for (int i = 0; i < 16; i++) {
      a# ^6 H. i2 `6 f5 {            queue.push(i);
    , ^" [+ S% C# v        }5 ^+ H5 I2 ]+ W+ D$ F" j
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    0 f8 P! k+ e1 {/ |$ f6 s& }$ t, g/ f        queue.traverse();
    / O* ~8 \# }( T) H3 A        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());- t. ]- Y8 {/ b: F/ I5 h
    : h7 P6 @7 F- \+ e% L4 e
            //第一次出队:取出0-15  X4 B! M; f0 M3 e6 S% }, f4 t, Z1 t
            for (int i = 0; i < 16; i++) {( K6 E+ `/ e: h
                queue.pull();
    7 v- u  y+ e3 t' \1 E        }
    6 ?- u% A3 `- U# \( ?        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    1 Y$ w$ d; C0 x7 r        queue.traverse();- k, u9 j0 g3 }# C' o/ ]
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());0 z; ?. e5 o+ g

    . z3 g: p; j0 t* [6 i
    8 u7 U6 S7 R' E; v( A, F" H$ `        //第二次入队列:压入16,31
    + @5 x. Z. D( V1 Y        for (int i = 16; i < 32; i++) {+ L5 z1 V, |7 q! `5 b
                queue.push(i);+ V3 G4 @" Q4 ^
            }" l# ^+ K0 Z+ T, ~' ~, B2 E
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    ! V+ V* D0 s9 z# J        queue.traverse();
    , ?, ?4 K& W' y- z' B% e+ \" A8 O

    ( W, o3 s: G8 d& A* e- ^/ Y        //第二次出队:取出16-31+ n; k2 K  z) x6 g, ?% s. z
            for (int i = 0; i < 16; i++) {
    4 q* x; Q9 Q: |7 G3 n            queue.pull();
    ( _& G5 W! f: S6 {        }
    % z2 H' a! q. h- G        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());3 |0 g% v( N% g- O# Q( C( W: {: d
            queue.traverse();
    ! u* W9 _6 ~; h) l! b, I, O: G8 |" f  A8 T4 T
            //空队列出队报错
    ; N; ?3 Y0 D9 n        queue.pull();
    9 x3 h8 z) P# ^5 P6 j* Z. `  z9 o% E% u2 r8 `
        }4 ?( v8 h( q' m; T, S
    }
    1 r% F. r7 L4 P, _0 P" |1 J- |* z4 z7 G) ~& b+ [% q$ c  f) ?
    2 ^9 E2 G. H2 l

    , `" X) {! C) @0 \6 v9 E: _. U
    ; l" Q' j5 L% N' @) z% C8 e2 x4 g' z# _  r) V! {; {
    ' ?# b$ t% B3 y' E' o1 o

    ( K$ M5 K" ], W" t6 ~  S% s! A( u, n, f1 E& Q# D2 _/ W8 i1 q) s
    4 q! a+ `1 Z6 D; f% C
    5 I* L3 j2 v: a+ c  h# ]7 e: H

    2 H* p6 Z3 j' d) I4 i9 E2 Z& [9 |5 m2 x2 ^

    3 o  T1 W' k0 Y/ ^, M. e4 K, a
    ; L! {! p! U+ i2 j
    - i! q% I8 r3 n3 R————————————————; k; \, e9 ?- P7 _& d6 y+ Q
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。, I- ?4 n* [4 O& p* j9 a
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    0 _1 X4 n# B. |/ V! `1 W: w, {
    1 J$ d; Q; l( U% v5 ^
    & h. ~" D/ N) {$ X+ H/ _
    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-4-21 21:08 , Processed in 0.417724 second(s), 54 queries .

    回顶部