QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1580|回复: 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
    - E/ Z+ }& v! q6 f
    数据结构——栈(Stack)与队列(Queue)的手写实例/ G! [' i4 v5 ]$ U6 E( Z
    1 M; f: D. W0 u
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      ) B. I. |# T5 R
      • 一、 栈与队列的定义
      • 二、 用数组实现栈7 T' o! T0 ~, z# a2 n3 r
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试4 c5 D' g" F$ v- G
      • 三、 用数组实现队列# P& E: w' N- j$ ?7 I
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          0 x* W8 H% O( h+ t

    4 y' |+ |' \2 B7 e9 E5 `$ }1 O# O: ~$ S& K! e  {8 A- y
    一、 栈与队列的定义7 `5 I& M2 l5 y+ H$ N$ P- K6 o
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    * z/ R1 J. P0 I4 C 1.png
      }- s+ N6 ^( p 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。$ H3 w9 i( b5 S7 b
    2.png
    ; ~% f' }5 r$ r$ J& e1 q7 `; h

    # S* E7 q& x) `. n' ^. U1 f二、 用数组实现栈1、栈的接口定义7 c0 _: ^) G2 ?) {
    /**
    - q$ N: }7 V$ e# j% ^1 r * 定义栈的接口4 L3 m  H$ |& n( l  l
    ** v2 S( k# ~! \( X& R( B
    * @Author zhuhuix
    / Z0 t/ r& J1 Z! V: n0 l& i * @date 2020-05-01
    5 |: L$ B7 ~* \/ ?. p+ Y, E */
    : l/ n1 L; v/ Y% ]6 Z4 L( q, [public interface Stack {
    / p8 l" a- Q1 N0 }! @    /**, W( O! J& L: G9 k" J. k# f: c
         * 入栈. D8 U" b/ G! A5 ^! O
         * @param object 入栈元素
    , ^( Z( ]5 P5 R6 G     */
    / J  Y" W" O# Q6 a* e    void push(Object object);* e' _( ?4 v7 {+ i* D) w1 P9 \5 I
    ' I9 o9 |6 T0 p- p  q' M# X; y. p
        /**1 V) w& b8 t5 O" C7 V# \3 n5 M' g) B
         * 出栈
    ( |2 o7 R9 V  B0 A. J) u/ r8 d     * @return 出栈元素
    1 E* w9 o+ i+ ~( ?% `     */
    1 H" ~8 j" |, }  ^    Object pop();' Z, B* }/ K( g  l0 r( S, s: X; s
    2 I9 `. b- p$ E  }) I
        /**
    1 q. Q) c- g; o/ c     *  获取元素个数
    0 q2 `  l$ D. D9 f5 j2 f$ B     * @return 元素个数: c- p6 C  }- A5 |1 e% {
         */- m+ e% }* N+ N! b# J6 z8 Q
        int getElementCount();$ p) b7 b. `5 P; s
    " L& w, K4 Y6 U( s, X5 w- s7 g: p
        /**9 ?; Z1 P1 j" v; u0 H
         * 遍历栈的元素
    ! N  m1 N. `3 c. L( e     */5 \1 d2 z9 c1 y3 i& W! ?  p6 U" f
        void traverse();/ d* ^  P& J- H0 t
    + h3 U) @) n' ]- e4 {2 m+ U; ]" }
    }
    7 m- Z, M3 T7 }+ M2、栈的接口实现4 Z5 j7 O; f3 ?5 j- w' R
    /**
    ! i3 B1 E4 f3 A, s8 y! B * 栈的接口实现
    . F5 e* k) p/ k# v# T+ q& a *( Q2 P- j' }! q- K
    * @author zhuhuix
    ' w* c7 g1 q$ A8 \+ A. F * @date 2020-05-018 q, T2 z# c( _1 b# ^
    */4 Y6 L; F& o7 k6 ?0 C$ A
    public class StackImpl implements Stack {$ R; v3 @5 [5 X" j' z
            - g, k; Q8 I' a" u  V6 T5 z
        protected Object[] element;
    : ^- H2 B1 D/ u* R4 t8 }7 A5 |3 [$ i0 W/ d' m, w: W* U
        protected int elementCount;
    ; M% Z% ^7 i* w' n" b
    ! E$ o8 |0 K, C) h  q6 t. y* k    private int defaultSize = 16;
    3 H. g! s; M. E  K) u* E, x: ]% B8 g3 N1 t" b0 Y
        private int maxSize;1 _9 A1 b  q. o( A. }
    4 t$ j  ^  `) r7 p9 _
        StackImpl() {3 ?/ K1 o" z$ \  B+ Q' {& H
            element = new Object[defaultSize];
    ) l" Q/ o4 t) K0 V+ }        maxSize = defaultSize;
    / l" K' D$ K/ f% ~. Z! }    }
    0 y3 m" ^6 @- k+ w0 G1 f5 u" Q: W3 [
        StackImpl(int size) {
    # i9 j- H& {& H% v        element = new Object[size];# T- i; ]4 c& y6 E$ p+ E+ m; P
            maxSize = size;" S+ j7 J9 y3 q4 P- s# v9 w
        }
    ; H$ S, Z4 Y8 u1 K4 K0 f% V2 y0 J- ~, N) }3 d7 U* K
        @Override# N9 {! V, N% H: j' M: V
        public void push(Object object) {
    4 }- T# ]# u' |        //如果元素个数已经达到数组的最大个数,则进行扩容6 r6 r& R9 J6 U9 N1 `3 H
            if (elementCount == maxSize) {
    : \' p4 v" G0 c. B7 ], r6 M            element = Arrays.copyOf(element, elementCount + defaultSize);; o( f5 T) F2 A6 c" g
            }7 l  o7 p, M! ]
            element[elementCount++] = object;! D8 g* w0 N; ?

    6 G4 e$ b( G5 ~    }
    7 H7 ^' Z  f* Y, R/ v. D- j1 L        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    , V. y7 I1 p1 G+ o! A    @Override
    ; |9 s' S' c5 M8 c2 F9 q    public Object pop() {5 l2 q0 D; n( N; r; A7 e- E$ q
            if (elementCount == 0) {
    # J- }% T; J3 t            throw new ArrayIndexOutOfBoundsException("栈中无元素");$ F* |, O! b: s9 Y" w/ d) M
            }
    . {8 {: {1 a8 @  r        Object object = element[--elementCount];8 l( z# Z: u' a1 b+ O2 H, T9 o" Y
            element[elementCount] = null;, o2 P3 G3 O* {/ q" B3 t8 z# c
            return object;: C- d( T: Y- c; A/ a
        }4 _0 i7 B  M; [% l

    : s# q/ o4 \0 b7 f0 Z    @Override( j. y+ ~! B% R1 k
        public int getElementCount() {
    # w% W) |- r7 w+ a, i        return elementCount;
    3 X4 d' V$ T. `* p' M    }' A+ v# l; G/ y! x4 Y5 ?( z" u; W

    * m9 ~2 O" h: S/ m; L% m  r    @Override3 A( Q( O% S$ I6 y" P% N
        public void traverse() {" p& x9 u7 S! e
            for (int i = 0; i < elementCount; i++) {1 @4 j6 U% Y$ t! ^. C9 J+ y
                System.out.print(element + ",");
      d8 e) V8 o. ?+ M1 }* r. G( f        }7 P% K* V0 r3 A' X# o7 }& L! s
            System.out.println();
    " Z+ A& _! D" ^" x/ y# @7 F% ?    }9 r! s/ W( X2 s! p9 f; K
    }& q) }! H1 a9 q; Q
    3、栈的测试
    4 Q; W/ l) C8 Z: K! ?  ~2 ^public class StackTest {
    : l. g1 t0 r' w) u, {    public static void main(String[] args) {
    / S4 s" p; a/ s: y        Stack stack = new StackImpl();
    0 l6 J. n3 i! c* m: C+ E: _  ^, {; E& Q) M: Q7 c2 Z& f9 [
            //第一次入栈:压入1-15
    2 {+ C" e7 X; w7 R1 @+ `, u        for (int i = 0; i < 16; i++) {
    8 C+ p" k9 l% e7 K4 y            stack.push(i);% {& r* g- \" \8 a
            }
    2 O7 q. k" s1 P9 j8 m. h- m        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());0 L% E2 t6 k7 U7 b+ r9 `
            stack.traverse();
    4 S' [9 w& x' ]6 u, h' t) }. q& \
    2 z, |( F+ P+ Q        //第二次入栈:压入16-319 @: [; m- Q1 ~( u  `+ d
            for (int i = 16; i < 32; i++) {
    " W2 |5 `, r3 N( {! k' r/ d            stack.push(i);
    ! j6 t. m* K: e5 A% X        }
    / V# ?% K: e# A+ S: c        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());" U; A8 @; C8 g- ^- N, M- T
            stack.traverse();) s* C, m8 \% j3 J/ K( [
    # v6 U& L1 p. l  k
            //第一次出栈:取出31-16* X' Y( Z# ?- K
            for (int i = 0; i < 16; i++) {. y7 w! x1 T  x, k3 p4 h% H
                stack.pop();+ b! L; a: i( T3 g5 n5 @
            }1 ]4 _$ }4 M# A7 I+ W  ~% E7 J
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ' z# G5 r! ^& R        stack.traverse();
    8 d2 J8 k6 ]0 ]0 g$ r6 d2 l. M# F
            //第二次出栈:取出15-0% e' P! a" u& d6 }+ d
            for (int i = 0; i < 16; i++) {
    1 }5 }" f2 f/ q" f# V; r            stack.pop();6 r( a: J; n7 j9 f2 a; i/ s! i
            }& S0 ~' B% d: A0 ^# Z
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());' D# v, O( p  I: }. P3 K
            stack.traverse();
    0 W; Q) {: D0 D7 w. a$ U: C6 a6 D" `/ i: c* q8 r
            //栈中无元素,出栈报错( l5 B4 k4 y2 A7 c
            stack.pop();
    0 H; L3 I! h( N/ r. w+ U0 W/ G5 t9 H
        }
    + w- o6 l0 I# o! j% v1 q1 N% f}. }. T1 P/ P0 B( P: n
    3.png
    3 O; y" s$ V7 A9 Y/ j
    ' I/ m% \1 S* |5 y: q, y. z3 s7 m: e- t: {/ o- M$ l

    % F2 [" G9 C+ B% e+ T+ I5 K2 T三、 用数组实现队列1、队列的接口定义/ m' F) ?! Z& X; F, A4 V: f
    /**8 p" E( J  \0 w* ^3 \: u/ d
    * 定义队列的接口1 U' c1 N- m* E; ~# K) s
    *5 d  d  B1 ?: W, N1 v
    * @author zhuhuix
    ( j4 w+ H, R; @+ i( z/ d. y4 D4 t * @date 2020-05-01
    ) y1 ~; i, m* ]& Z7 R */
    % H. B; r0 t, Cpublic interface Queue {7 A9 s) c& |/ \1 O" I( r# Q2 R

    + F: c2 c) w5 A    /**
    ) L$ T3 |. r0 t# h# X9 s     * 获取队列大小) [& }3 h9 B3 q1 Z# d" K
         * @return 队列大小/ n- R8 t+ n  y' A6 @4 Q
         */
    ( o) t6 i4 h. B    int getMaxSize();
    & U9 j. O+ \' {/ }8 |: |# S8 A$ N1 L+ {! h8 H! f
        /**/ b2 ^9 [# M( I" k. A
         * 入队- g8 ?) {6 \9 r$ ^
         * @param object 入队元素% E% o$ z4 c* z/ W& B
         */
    " ]( Z* Y3 {7 _* R& R& w) I0 }    void push(Object object);
    8 J; p$ P2 ]  s% s7 n( F$ o. a" z4 q" s8 N9 `
        /**- a6 G; I8 y/ W
         * 出队3 e2 H$ f* O# L" y5 z2 k
         * @return 出栈元素/ e+ u4 t, s: x: Q9 {6 m
         */
    8 @/ @3 q8 T% s* V& C2 d: F    Object pull();+ t, y! F5 s7 i+ `7 f  b1 C

    : d9 L  l, U) X- ?    /**
    ; V$ a) u6 ^+ Q& O# ^( B1 D     *  获取元素个数
    $ U. B$ P: ~8 ]# }9 c9 W     * @return 元素个数
    4 U: }! z$ ?6 K8 _- Y     */
    " }7 E! z1 d. W- H/ b    int getElementCount();1 A3 J3 s% p5 {( h: e

    2 n% W, w- j+ b! O1 |    /**
    4 y$ y( ^7 J- g0 M1 A     *  获取队头元素/ O6 s4 Z. B( L
         * @return 队头元素/ c. j8 P( r. T+ g
         */& A- F" E8 y/ w( F* V7 f
        Object getFront();- I  r1 m# T, |( f" r
    & {, f) L/ \9 S1 c" k* N3 q+ ?; f
        /**
    / `7 i! ~* i0 Q! Y     *  获取队尾元素
    4 J2 h$ [1 H5 O7 }% ^6 R     * @return 队尾元素
    * [5 e2 p# u7 p3 z     */
    & @( j, [+ a# ?& E    Object getRear();
    + V, b1 U# c; }3 I
    & m7 ]+ M1 w  d. g! s0 ~    /**
    , I' y* |% |" h6 \0 e     * 遍历队列的元素' X- A0 h& O9 b2 x& }+ Y
         */
    # b( L- M( L0 ]  h    void traverse();6 q. Z: |4 F: O" i0 c
    }
    # Z- J' j5 N1 G, H7 I! {  E2、队列的接口实现- R5 a2 Y+ W1 }/ L
    /**
    9 C# H! w1 K) K/ T. r' @ * 队列的接口实现
    8 b8 Y- t' B9 J! u/ s- B *+ D' K- A* M) ?9 g2 [; r
    * @author zhuhuix2 C5 R$ D0 U7 b( U" ]% u
    * @date 2020-05-01. S. q& N+ R! L& V3 `
    */+ U9 z3 s% r- e$ X) L, ?
    public class QueueImpl implements Queue {
    ; y" z2 L. x0 b
    - W% F/ ]; X# w9 V    protected Object[] element;1 |, k2 \! `9 K0 R. _+ `' E

    ) m# _5 U5 B9 E  {/ r    protected int elementCount;
    ( T7 M) A7 }2 z( y" Y* {* E* X$ f# V$ C
        //队头  R  Q' w- w: @$ V/ o3 M; c* b! c
        private int front;& t8 B/ A) G; |; `* r% e; u

    . J2 g, {, u% t5 {9 n3 Y/ y    //队尾
    $ m  U" M8 P( a" l$ J" w    private int rear;. p" x7 j. `* \; q& o# u/ X

    9 G7 _+ t( E- u$ N7 d! _, P# I    private int defaultSize = 16;
    - N6 ~/ `0 s& z0 q, I$ W) y9 A. H, z: u$ k) X. w' ~
        private int maxSize;, y) E3 V+ d9 D

    , Z. Y$ f2 e( H$ j9 \3 |    QueueImpl() {
    - d6 W- h- M1 w/ o# d) ?        element = new Object[defaultSize];
    7 x) ~, }( y1 |& i        maxSize = defaultSize;0 T: C2 t* U; T& n  h& v: `- A" u% e
            front = 0;
    . d1 }2 B( E5 A! j4 Q* a0 G8 ~2 |        rear = -1;$ g' U4 u" E  h; ^
        }  c) X5 q8 ?" ^, k, W4 A+ g# c; l6 U9 ?

    ) L1 J0 ?6 I; s' T) B    QueueImpl(int size) {+ ~8 F1 G; F9 J' |
            element = new Object[size];
    # L/ Q5 z' [  ?$ _        maxSize = size;( J9 H4 ~0 e5 k( g7 S- F5 P; r
            front = 0;
    / a: P# k5 B( D* C) e+ x        rear = -1;
    2 Q; r% n& M3 t; S! }1 ?    }
    8 h( o; E, x7 ?5 x! B
    + @# q- o( i& w* ^4 d% Z7 {    @Override& z# v9 ], @: f: C6 v1 Y- I& K
        public int getMaxSize() {
    7 U- x) b4 D! O! M' ~# p9 H        return maxSize;
    ( i0 F( R0 f( T: i1 \; f    }
    5 p6 [4 q! Y" f6 e* e" }$ k( _, j7 A* ^! |  [* S9 @
        @Override7 y& N" f; l3 Y5 C; Q
        public void push(Object object) {
    . a% [3 m6 ?2 S$ u& M  _5 U        //如果元素个数已经达到数组的最大个数,则进行扩容+ W7 H' K+ T4 W0 j# f; w; ^
            if (elementCount == maxSize) {2 a2 K- }% z- {; f: l" Y% E6 ^
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    , D9 {2 v8 U( Y% h: l( L        }" G! c  R1 ?- d% M' ]
            element[++rear] = object;$ k1 Y& C3 T+ ^- \4 Z1 X9 y
            if (rear == element.length) {
    8 K4 K9 }, ]  `4 k- P/ |* Y            rear = -1;
    ! }% l3 E6 h; p6 y" Y        }
    $ c7 L4 y5 {% `0 F        elementCount++;# \; M) h* [9 h5 O5 V
        }
    ; d+ R, Q( X- |; M4 L
    # b7 [6 C- i) D3 ^    @Override7 c1 Y) }5 f9 ^  U9 @5 U; s
        public Object pull() {! ?4 D  O" A2 b
            if (elementCount == 0) {: a# [8 v4 v& h6 }" P
                throw new ArrayIndexOutOfBoundsException("队列中无元素");; A3 [! `& M$ X* N" W, X+ F- H
            }
    ! y# |) {, e5 f2 w4 l        Object object = element[front];+ l/ t: `$ J, M8 u9 V3 x
            element[front] = null;5 b; B; f% o, B- U! \
            front++;9 u# q, ]2 a) b) f2 J; D
            elementCount--;
    : U/ Y8 l" O: o! {) a& Z0 r( {        //队列清空,队头队尾恢复初始值
    2 k: d5 x+ D& T- x5 L; F        if (elementCount == 0) {; H; f. w) y2 m$ K
                front = 0;; b& X, o. c% U
                rear = -1;6 d: J% I6 P7 w. ]# x, ^
            }0 a$ ^: ]" e4 {: G4 L6 J9 w
            return object;5 L# B2 j, v/ |' t7 l" P
        }
    6 Z* {% C& e  I# N% m" B* Q. b
    ! h- a, n: a8 L  ^( o" x, m& l) t% s9 L    @Override
    4 a. u  L7 G: ]1 @7 i% e7 {  U    public int getElementCount() {
    9 a# q1 R$ b0 l5 H. o        return elementCount;8 y+ j- q0 G& N2 @1 O
        }
    " O. q5 L# f. o0 P' ~2 R% Y8 P4 I) c; Q) x
        @Override
    : X) k1 t* X( U: o7 u3 b    public Object getFront() {
    , O( ?$ l# @7 }# i% b3 Z& t1 j: J        if (elementCount == 0) {
    & B1 `2 t  C! G" j1 v            System.out.print("队头无元素");1 h* O* f5 M% G7 M7 _0 o2 z6 \
                return null;9 L1 ?+ o6 Z3 w" v
            }
    & z  B/ q' [( F# ^% j( o" ~! A        return element[front];- U' l2 z5 i" b. D* n
        }
    1 P! _9 d8 J0 S5 u8 ]5 G$ N5 A0 l4 K  K* Z, f
        @Override0 f) u. H: ?3 d5 l5 A$ Z
        public Object getRear() {# D. q0 i5 j4 k5 X. f+ F
            if (elementCount == 0) {
    4 t( Q/ q0 l4 F& ^7 Y4 M            System.out.print("队尾无元素");0 A6 C& X+ I* E1 L2 Q  u
                return null;1 h1 K* N: x6 o3 Z' D; a
            }1 J  [; k8 m, g6 N& P. F+ m8 R
            return element[rear];+ R  v5 i; [2 G& v7 {. t, h
        }8 l% v# ~, p) ?1 m! a+ ^. R* Y

    ) Q' G. Y( w7 ]0 n% p9 H1 z    @Override
    2 Q/ B4 M) @) E& i# ~4 {- N4 B2 V    public void traverse() {
    ; q  u# x4 {/ d/ f        if (elementCount == 0) {4 b% V: G7 f! \- M: f5 L$ e) j! @) M
                return;0 L& P7 ]1 @# k
            }4 H7 w3 S: C8 a+ Q9 S1 P4 t1 m
            for (int i = front; i <= rear; i++) {
    $ v) ^+ Z8 U" ^. q- I; D            System.out.print(element + ",");
    / Z1 ~. @  a# r3 E) s# l- y        }
    7 H: E1 ~' y$ j9 Q  _- J0 x# ]        System.out.println();
    1 z) u8 n& z6 p, d2 L: @    }6 @1 |" F4 m% H
    }7 _5 W2 _8 @& Z4 q( d& x3 G

    $ [$ d3 E* r! P
    4 u  J1 A: S$ Z# H& U  u' N& x4 @3、队列的测试5 X1 F, }/ Z; A( q6 @3 p8 H
    public class QueueTest {- r  j' c3 y- W0 u0 U1 m; x
        public static void main(String[] args) {
    , `0 h3 W+ z1 ]  h' i" M) Z7 C' d, [        Queue queue = new QueueImpl();) N. p" ^  S1 B+ B: }9 G

    3 q' d* X4 N0 G/ F        //获取队列大小
    2 Y' Z( n+ s3 |- N        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    9 b7 E. _% g! b0 a) ~' a! W4 d7 W0 c9 m" @" Y) @  t
            //第一次入队列:压入1-15  B3 S: W1 W6 @' }8 E/ E
            for (int i = 0; i < 16; i++) {/ r$ E# u, ?, {( S
                queue.push(i);2 |* t# }, l# b
            }
    7 f4 y, Q( f$ O  d& X        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());/ R0 Y: Z7 i2 o$ B4 K9 {$ f: H. L
            queue.traverse();
    . o2 ^  `1 P* s$ T2 U5 g4 {        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    % o+ @! W' n1 j1 m0 b
    / V" z5 q. w0 R% I- Q        //第一次出队:取出0-15
    / P9 `( X7 d+ }        for (int i = 0; i < 16; i++) {' m9 s3 u- e) [+ p- ^
                queue.pull();  I3 f) V# O  l
            }. Z% ^8 r) v4 X3 ^
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());: z1 M: n5 c5 p( u5 B, q4 Z
            queue.traverse();# }7 v, G8 W6 C& p2 I
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ! m' I1 ~+ D4 s' a/ j, b& r- x
    - P( J- {& p6 H/ Q5 G+ z
      o7 P2 U2 Y# G& A4 B: w' r        //第二次入队列:压入16,31
    - |( F: X- e/ i3 w1 h# D        for (int i = 16; i < 32; i++) {
    ; r6 |! w: t$ a/ O            queue.push(i);
    / g3 w& R* m! c+ y        }
    & e; k0 J. L* z) z. K, g        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());: x5 y3 ^* g/ K+ n. g# F
            queue.traverse();
    ) a; _* B" t; X# e' R8 O+ v+ f! q" J( U5 Y

    + W* N0 b) }! `6 S! ^3 O        //第二次出队:取出16-318 B* I$ W9 x$ L7 D/ @
            for (int i = 0; i < 16; i++) {
    # @$ \' p! t# g! f; q1 Z* Q            queue.pull();* y, W8 D7 {% n
            }1 z& o$ s1 [# j0 C0 X' e/ @
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());! K" `" a6 ~0 ?  g5 r
            queue.traverse();
    & [( z3 V# ~2 O4 q7 B7 [
    5 t5 E; R5 I: F2 P        //空队列出队报错
    8 c  E3 L# F* l2 }        queue.pull();
    - @/ F. H& r/ n, h& m6 t$ L. p" Y( {" P( e/ V
        }
    . T5 {/ A& E. T7 K, A}2 h" v6 @" k+ ]6 l. T

    / `: f$ a% s  c- ?1 `1 a+ G( I0 S$ i  B: c' a

    2 @% T- N9 y5 S( ^" i* @9 A0 M; H+ a5 P- f9 S

    : U, }# p$ f& k7 s& N- y- }7 g# [/ u- c
    * L; W: a- D$ ?4 ]/ O; A% I. G

    ) N2 d3 @: u% Q) _! {4 @- B+ v  w1 p% p% L

      x& A: X6 z: [2 m6 m0 t
    / U: @( U, A- x; N' l0 p4 ~) {; B' M  E6 T) j" b9 g0 ^; a$ i

    : ?6 K. z2 J; R  \; H  ^9 |/ O; ~5 z  u% _- x) ^! L

    " _4 K+ Q9 [5 f  w————————————————
    , v2 f3 \3 U  W; j! b1 v& I. G8 p版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 T" t8 H- S# n# B: C
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785( A, w6 ~, {& L* J+ [3 W6 M

    7 {. d9 o8 [  s0 [2 [# `7 \
    ; w  \5 f; L! t
    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-9-18 05:20 , Processed in 0.327818 second(s), 53 queries .

    回顶部