QQ登录

只需要一步,快速开始

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

    8 M, m. X0 E- G" u' M7 C5 \数据结构——栈(Stack)与队列(Queue)的手写实例* x2 M, h' v0 k0 U! V
    . F( _; q! h) S. g1 ?: m
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      % s2 Q) d8 u4 P
      • 一、 栈与队列的定义
      • 二、 用数组实现栈( U+ d' b) X( M& l1 Y
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试5 Q8 O' M) v( i4 x
      • 三、 用数组实现队列1 W/ {+ D' k/ Y, ?; Y" C) @
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试2 q0 F8 t7 W  E9 V! ^5 z% u) P% J1 n8 B; I
    & a& W  |/ N# I' z4 \) @( F+ `
    ; ^3 C) K0 A2 t7 J, @( g
    一、 栈与队列的定义
    % d) k( W- [& o9 ?$ l栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    5 b8 |9 V: Q* n. F, A& ?, v( j 1.png 9 n  T3 r8 `6 d- x/ U
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。1 k% V$ N2 O: s4 D1 M$ o
    2.png " Y: J* a0 m4 P1 ~% T

    ( I0 ~9 C7 P0 F6 N1 Q+ G7 s8 E& t4 s$ U8 ^- s) q% |
    二、 用数组实现栈1、栈的接口定义
    ' _2 V7 e; ^, z3 C: T$ w8 ]/**  W- V* }9 A) v. P5 `
    * 定义栈的接口
    4 X3 k# K: u! M2 F2 I/ S8 \& c+ i4 P *
    * @" [- q/ ?' ?4 u- Z6 \3 X * @Author zhuhuix
    ( b1 _  C0 X9 X) f  q$ _ * @date 2020-05-01
    0 z+ |& n' x! k* m: e" X# U */" X) [) X: r  V3 h* ^
    public interface Stack {+ ^# D, w. k6 p% f  D( O; g
        /**5 a( o$ \$ z  g, M1 K2 n2 b$ `
         * 入栈
    + k- S7 {$ [2 q- _  L     * @param object 入栈元素8 I8 F; G, k7 ^
         */3 T5 O" e$ `& P3 s' a
        void push(Object object);! q+ b' [0 D7 v7 d% r
    ( ^! d8 |( L# f
        /**" ^6 l& o3 u& U  `8 J- V
         * 出栈
    4 ^5 `/ D/ }! j( a' b$ W: g     * @return 出栈元素6 J& y: F3 S. \" Q5 S& }- ]" ]; o
         */
    # i5 H' S4 H" s( y  D) C    Object pop();& z, e$ }7 z6 [" a2 m/ O, @

    8 m6 d) Q+ e& c/ j) Q    /**+ s1 V+ X8 [3 a0 v
         *  获取元素个数+ A2 @2 p% f) {& S
         * @return 元素个数
    ; G- N1 T) z0 v; s0 {& |3 P* n: [: }     */
    4 A# b8 R3 [2 K6 u- g+ H( I% r. Z    int getElementCount();
    / T, Z7 _( {3 b, G# U. M: M
    , T+ F$ R* l9 B+ ^/ I9 N1 a( u' i    /**- G: A. }6 {/ {6 j+ Z8 n0 y
         * 遍历栈的元素5 ?6 {( j; c3 F8 l; B, o' {* Q
         */
    + N- t' a' T3 u1 e" h    void traverse();
    2 N4 F/ n( j* [6 _! r8 l8 E
    6 C8 ?: }5 y! i' a2 Y# j}3 R( c$ d( t  R: ~: K/ m& j
    2、栈的接口实现
    ) D& K# g3 M5 `' }5 ]/**4 `0 e; Q& N6 L0 v" V  ]" ?
    * 栈的接口实现
    ) L# X2 l2 z' n  o: C+ V *$ O8 W/ ^: G2 L4 Z2 r
    * @author zhuhuix# t8 e% K' g- i8 U5 i2 j6 }
    * @date 2020-05-01
    & b! J: N* Y2 `1 m) f& [: @ */
    6 C- r3 w( h9 \: Tpublic class StackImpl implements Stack {
    ; p5 x8 u! F9 p0 q2 {2 i8 l$ c        & K9 v: a5 q8 J, H0 l- k' R( ^
        protected Object[] element;
    4 v0 k  E1 l: y0 b4 ^& e, Y9 L
    / [7 Z2 F0 d; u+ _- E: N    protected int elementCount;$ ~( M* G& N0 b' Q
    - p2 M( ?2 E$ W  y+ I" g
        private int defaultSize = 16;
    7 B  S9 H! p* a  q. k% u( Q0 ^0 j+ A3 I* j' L# ^
        private int maxSize;
    ; b- \: ^. a2 k4 y1 k% }3 u  F: X+ E
        StackImpl() {' O3 k/ f6 b- {, W. x  x
            element = new Object[defaultSize];2 K+ _# p6 u" q' ~& S/ N" i* a- E
            maxSize = defaultSize;
    . }7 F* V* O3 z7 c7 t3 `1 k    }
    0 k& \  \1 b$ s- g! e3 a
    4 Q+ ~. P6 M7 M6 y2 A8 t3 F    StackImpl(int size) {0 _/ ^# R5 I; F9 Q9 S2 {) A$ U
            element = new Object[size];
    ' J5 P" R- o% w% a' v; ~/ E        maxSize = size;3 M- B" k, p" v3 c0 X, T
        }4 y4 P% A, D; Q) O

    $ |: I* H9 B- U- k- u7 s    @Override- ~# f+ V9 ~% ]% g* N3 l2 g# D
        public void push(Object object) {* _  v8 u# u' ~* P' a
            //如果元素个数已经达到数组的最大个数,则进行扩容
    " n2 I# E$ _5 x) P3 X        if (elementCount == maxSize) {5 B& @% G( r) ^$ E+ J6 ^
                element = Arrays.copyOf(element, elementCount + defaultSize);
    9 x, ~$ U& Q$ ~0 o* p        }6 q2 n0 ^$ P0 x" S
            element[elementCount++] = object;
    7 H9 a4 N$ {$ g2 U( b4 b7 X% O" v9 o7 E% V. {! h
        }
    & j; ]! @6 N0 Q& K, w  r  S        // 本代码未实现数组的自动缩小,具体方法可参考JDK) r! u! h* X+ O+ }
        @Override# C4 q! l  p5 S! E9 h1 _
        public Object pop() {, K/ j. M- |& s
            if (elementCount == 0) {- U7 e2 o7 E$ a2 M' H3 ]
                throw new ArrayIndexOutOfBoundsException("栈中无元素");) J1 J% d8 H. J6 f4 X
            }
    ; l. Y8 I: {' s( Y! ^        Object object = element[--elementCount];( v! R  \: U, G9 C) f
            element[elementCount] = null;
    / _9 [! U( `0 e5 c( n9 i        return object;# A& ~5 [8 k' C* Z6 ?. J
        }
    " A$ D9 _' Q0 S
    4 ^& H  P' r; y( k1 s    @Override
    ! x0 ^0 T3 N4 d    public int getElementCount() {
    , x: e% `, y$ r/ M" N        return elementCount;* l7 @$ q2 O: R- k
        }
    ' c  ^  h# ]4 C6 D2 m; {' F) {* Y  h& Q, j
        @Override1 Y- _  P6 t6 A' K: a4 r
        public void traverse() {7 o- j7 l1 {  `% B
            for (int i = 0; i < elementCount; i++) {4 d1 m5 |6 _2 C# W
                System.out.print(element + ",");8 W) D1 L" }# v2 O
            }
    5 t% i9 {" V( a# i, i, e        System.out.println();
    ) }( M  p; ]- E  c/ ~  Q+ w    }, b2 _) U3 M' V4 C8 y
    }
    ) ~% n! n& M1 Z! b7 l! X, t$ }4 ~+ \! u3、栈的测试
    & ?$ _" ~4 N( h; [7 ~' }2 K' Qpublic class StackTest {: W  S  j& Y2 m9 W/ P" n
        public static void main(String[] args) {
    8 @% C% U- Y2 B        Stack stack = new StackImpl();
    . h/ q% k, I4 r/ G: W: i
    - ~/ ^! ~4 q/ u' J% k        //第一次入栈:压入1-15* R( E4 O$ I! J0 F
            for (int i = 0; i < 16; i++) {) H7 x# F! c& E, K( L$ r/ t! a" W
                stack.push(i);  P. a' R* z, A2 ?
            }
    / u' b' ?# |! m/ r" L        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    & Z+ f1 |$ ?* m3 k        stack.traverse();
    # a( [; v, a5 [# z3 K- S
    3 D$ O5 ?( k* H# Q" K9 `; n  L. A        //第二次入栈:压入16-31
    ! }8 S0 l6 K4 \        for (int i = 16; i < 32; i++) {
    & D& L8 I$ _& R8 W$ ~2 e            stack.push(i);
    0 @9 h' W9 p# ^6 o4 x6 K        }
    - i: u/ |" c1 ]        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());0 I) }. J+ m8 @6 F
            stack.traverse();
    . m% v, O0 {5 R  `& R$ m5 ^9 Y: m2 z9 N9 E/ T
            //第一次出栈:取出31-16
    5 d" H- E$ k8 s; g) |        for (int i = 0; i < 16; i++) {( t" Z9 M- ^0 d0 Y/ @
                stack.pop();$ H% I/ H. e. R7 q' w- b" e. Z& i
            }
    8 Q5 y; v& J: K# P7 Z- J0 v- L        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    / J% F, u0 W: J) m" y3 j8 s6 r        stack.traverse();
      v- H) X) s4 R, ^2 I
    6 K) b# M% w  j: d. N        //第二次出栈:取出15-0( I8 w9 ]0 V0 b' J4 y5 M& h
            for (int i = 0; i < 16; i++) {
    ) o6 Y& N" Z" j1 O            stack.pop();
    # t# k+ j; b  k/ }; m. I. F4 o        }& Q) @" b! n9 `* Q$ L
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());0 b6 J- |% x& U
            stack.traverse();; w* h  F& D5 W( y1 Q# v- O

    % ?+ Z# [( c; V$ o        //栈中无元素,出栈报错
    . p0 H4 l& P! {, b4 d        stack.pop();
    ( G% `. y" r: j; h' u# U: |' M; S& v4 n9 q1 J' [
        }/ s8 k" C( z7 v+ Q' ?6 i8 t$ e4 f
    }. i6 T( g4 i. F5 j
    3.png
    0 n+ R+ Q/ M- x" q4 a  R9 J
    5 e) P4 U8 [. ^5 P: a# A8 }- o5 I. d

    + ?9 X8 w) a2 _三、 用数组实现队列1、队列的接口定义, [1 ?5 }% f+ e! x
    /**
    9 ^% V% t# ]7 i, q3 V) s * 定义队列的接口
    1 U' }+ Z. u3 a( w9 m *8 ~3 }5 r8 d* T) H: G8 p) f4 ~
    * @author zhuhuix) m: D: }0 _4 e# J% ^& p8 H# N4 ]' L
    * @date 2020-05-01  x6 y. _/ \7 J% q" p
    */! C( U8 v  `( H6 j5 v! |$ q5 S. e
    public interface Queue {
    2 [+ @% O( k5 E2 M# N/ U# i$ s8 Y* ~) K0 S
        /**
    : {8 E2 X4 \  z2 [     * 获取队列大小, W" e: J4 ?$ y; p1 N
         * @return 队列大小
    ) H* N* s8 ^" r& U     */- k5 Z% ?+ \* l! Z$ o
        int getMaxSize();
    : K" G9 ]1 _8 S- `* s) n
    7 u; g/ Q+ m5 S" S8 k, J; }    /**
    9 _7 C8 n5 e7 y0 J- K- E) D     * 入队
    3 }+ b0 U1 F3 m. ^8 n' J0 g1 o     * @param object 入队元素2 Q' }' K* M: _( E& Q/ E" g: T
         */
    ( l( T! S, h! o    void push(Object object);0 M& b7 A& X# ?# [' i( f  u8 d
    8 B( {: I5 i, {. D
        /**9 {1 F5 b$ m( \: y/ R' g- Z# w  ]
         * 出队& R$ J. t+ s( p: N6 y
         * @return 出栈元素
      c) y$ r/ P! ~     */' K7 X$ B2 Z# U2 D. w+ O  ~. K
        Object pull();. `! n- [# j/ V. A+ q+ q8 t# r5 \

    ) ]9 Z; ]2 I" v5 Y4 h3 q6 m: r    /**
    / e# c5 C4 G- t. o, u; i     *  获取元素个数
    % T+ ]9 E* F0 ^2 |; @     * @return 元素个数3 W- t8 U) G$ f3 D( V+ ?( g) J
         */
    * R3 S( b: j- d7 N    int getElementCount();
    & W0 F3 p: s# \4 |- H( w
    " c+ ?4 B1 }. U3 x' p9 L    /**9 n4 m# D& n' |6 _; F
         *  获取队头元素
    3 Q) J. w! m# Q     * @return 队头元素' u: Q% t: i/ u3 p% T
         */4 S$ Q. p; q* }+ I9 k
        Object getFront();
    5 e+ @9 n; m; a/ Z  T7 q: \
    % S& {0 K. D; M! ?1 \9 O7 O    /**
    : f: z, {: H& Z3 L  P/ Q5 P     *  获取队尾元素
    : _  h8 q( q# q  F     * @return 队尾元素
    8 d. Z# b2 y9 q. T/ l     */( Q% Q% M$ x& d7 M, \5 `* A
        Object getRear();8 B) K, E8 h2 K, F

    3 r" Y, d( H2 _+ t0 y% Y    /**
    $ J" ]$ H# ~( @/ A# c: g9 \, A9 D( q2 X     * 遍历队列的元素2 R& _6 l7 o( X, _: R3 l
         */; L, ]( u- |  A' ~6 t/ b
        void traverse();
    7 H6 \+ E7 |' R: y) C# ^  o' B$ l% L}
    1 b' N8 k3 n% u' T8 }2 }2、队列的接口实现
    1 R2 \! P) N, c* f% Q/**
    + ]9 K" {0 B1 y8 @: o& M% k+ o9 z * 队列的接口实现
    ) `" R! Q  z' e- x1 q, d *8 o: j. C4 h* p) W/ ?8 j
    * @author zhuhuix3 s$ h: R- B6 ~9 A# e9 ?; @8 {8 ?
    * @date 2020-05-01
    1 _) f1 \* b, ^/ N */
    3 I+ _2 G% l2 E) j( q7 o3 ^- Zpublic class QueueImpl implements Queue {
    5 v' a# n: t/ s- L% D, u' u+ S5 t* h2 u: J! ?# d" Z
        protected Object[] element;
    4 ?" s3 r6 H5 o2 O- ?3 z# _* W
    3 d* p: }8 h8 O    protected int elementCount;
    # f; ]* W! M# q$ B0 F" L* n/ w* @7 H% ?: x
        //队头
    0 h& H7 w* M+ K# ]+ A2 Z    private int front;3 Z. t& H# t! i" i( E' v

    7 G# M- c2 B$ T; e! N" x) |9 F    //队尾
    5 O) |) G3 E* t0 \* I    private int rear;
    2 x1 k+ R6 O7 q9 I1 _5 z7 j6 m  G& J% t. s4 m! D
        private int defaultSize = 16;
    ; c5 ^: @1 S3 @" v8 I  x  d$ d) y; |0 H7 }. N% Q, S; Y3 Y
        private int maxSize;9 y9 q' _: Q- S- V3 U/ e' G
    ! r* f9 c3 S6 t) r# H
        QueueImpl() {
    3 h, a1 i) \8 v2 p% o7 Q% ^! e' W        element = new Object[defaultSize];
    , ?  Z0 M) D8 D& b- m: b. Y        maxSize = defaultSize;" _6 s. v9 n* a- U8 K
            front = 0;( \. P; N/ U4 z) T: X& W. w9 w
            rear = -1;
    : v& j5 _7 X& a! M4 Y( R    }
    3 c3 b; [* Q! w& c$ U
    # f- o2 t" ^5 ^% A- `6 |) H) n7 ]" Q    QueueImpl(int size) {! Q) ^* J, O* Q* x) j# N" w/ j$ ?
            element = new Object[size];
    6 B5 X' H+ _/ ~, c" L( j6 \+ {4 C& v        maxSize = size;( O, _2 \) h: ?5 X
            front = 0;
    : k- v# u' z0 q' g+ F" p* R        rear = -1;: |' E' z1 K* U2 a& l4 z) q
        }
    ) P* N8 N0 h; ~/ Q" T4 {. Z
    ! O2 W+ Y; R. v' h3 U    @Override) B1 C2 S6 r$ y. a. Y0 b2 w  h
        public int getMaxSize() {
    * }( m, d( q- t  s( g4 V7 H: u: K        return maxSize;
    ( D& X% B! v0 N$ f# X    }4 E3 y. M4 h0 K  l

    : G  M% g- _, |    @Override
    9 Y+ Q7 ]) r& R0 @9 f. T    public void push(Object object) {8 r0 W) g% b: x9 i; h2 s
            //如果元素个数已经达到数组的最大个数,则进行扩容1 A" _1 b4 O4 V( r
            if (elementCount == maxSize) {  ?: I8 M' a. M
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    ! q" p8 P( l! ~8 a! E6 ?0 W        }) Z1 p8 q2 u2 X3 d' O5 w
            element[++rear] = object;9 ~1 v# `' _  ]0 i6 O) y/ v
            if (rear == element.length) {
    ! E& d: |! C: l4 i4 d! R            rear = -1;
    ( d; E' B+ c, j' W( l8 g3 |        }, J, k8 F) F5 W! E/ D9 h5 D
            elementCount++;
    + A9 l/ `6 A3 G3 B' b; q    }
    8 }) x2 X" f( j! i# I
    6 v. k2 z% l3 H# R2 z    @Override
      y7 W8 H& j) ]& t' k2 ]1 U    public Object pull() {
    2 {+ Q- }) y. \  }& ]        if (elementCount == 0) {0 w- z0 m4 _: f, ?( g
                throw new ArrayIndexOutOfBoundsException("队列中无元素");, H1 S! _) E8 }9 v+ [* z
            }0 p' }* M4 i$ d
            Object object = element[front];. V) Q. [9 z0 |9 m( l
            element[front] = null;0 u% W9 d8 X& a
            front++;
    - w/ Z0 D- ^% Z# ?# k        elementCount--;
    / \8 V/ y! k& C2 f0 o9 m( Z        //队列清空,队头队尾恢复初始值/ p! Z4 p- Q+ J" I2 X
            if (elementCount == 0) {
    + ]  ~2 D7 q' w7 p            front = 0;* W6 ^9 p7 K3 |; Q8 e8 k* I* P
                rear = -1;! M/ t9 A5 R2 y6 S4 I- Y
            }& G0 m( ]+ t8 Z+ ]
            return object;4 [' s' d4 z: R
        }* u  k6 `- N+ u. Y! f" z

    % `7 o  b0 z1 ]# z    @Override
    + @2 a; j. l7 B. N    public int getElementCount() {% w8 d$ N& ]& B9 E
            return elementCount;& R. l/ U% f7 G: f) o4 m7 u. }
        }
    8 [; ?- P$ j' N% P3 O; |9 O6 E( r# G9 F0 Q8 X! F
        @Override! [5 s0 z' f/ S7 O( Z( F
        public Object getFront() {
    5 S2 L6 X: X# ~: I        if (elementCount == 0) {2 U& ^# Z: j+ W: Y
                System.out.print("队头无元素");
    ; F+ p: K4 v3 l7 I            return null;1 u( V3 l3 |4 z2 ]- J5 g! L4 D( o
            }
    . N. {+ f: ^( P7 c; [$ U+ D        return element[front];
    9 P" k$ o- m: U4 u2 Y  ^8 \    }( C3 L% w  |' ?, z( s

      {$ y( C5 w; c- y- O( a    @Override
    7 }: h1 a: A* W9 h/ e    public Object getRear() {/ ^' x+ ?9 \+ R- n& D7 \
            if (elementCount == 0) {" i+ `9 K9 U; x8 Q
                System.out.print("队尾无元素");& N" Q' H) b; p4 \: y: i+ p
                return null;# r( ^, V9 z) f3 G3 j
            }
    0 d) O+ [, ?1 v4 K9 |- S1 b        return element[rear];* R+ \! x) @- f7 W2 b1 }2 q1 b
        }
    & g7 {* j9 r& q, f+ d0 O
    * J8 e4 g* x# \! i, J  \    @Override
    % d9 G- m% f+ H% I0 O9 W# a& F    public void traverse() {$ X# J# F2 c% S" J; P. ~2 z
            if (elementCount == 0) {
    - `4 o% x' D9 @& {            return;3 v4 ]9 z$ c& o0 _
            }6 d; i; j. q- Q9 n3 O
            for (int i = front; i <= rear; i++) {$ ?0 n4 S2 \* D" c  E4 U
                System.out.print(element + ",");
    * j- [/ I: Z/ P) e- g5 {$ i        }2 E, u# {5 i' ^# }. H
            System.out.println();
    5 y' ~- E. d! q7 Y: L    }
    0 L% N+ o5 U% }7 m0 u}
      G0 P8 S$ |7 t; g
    3 \- [6 V( Y* ~9 @1 I
    2 N  C  d! J1 X+ l9 O9 V3、队列的测试
    , ]: \1 \' A: k# N: qpublic class QueueTest {+ c. v, G# k1 v+ h3 {
        public static void main(String[] args) {
    ! G: i+ q9 b0 A        Queue queue = new QueueImpl();
    : R, C# i$ p9 E3 d) Q( h
    6 y$ l, X5 C  c5 m        //获取队列大小% A+ h: v0 m" G& Z2 R6 ?
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());3 u4 e; ?; d0 @0 t8 q. L% A+ g

    ; j$ U  Q2 d* p( b$ a( I        //第一次入队列:压入1-159 N; g/ R6 K# Y0 o* ?
            for (int i = 0; i < 16; i++) {8 B# t' L: ^$ N/ h
                queue.push(i);3 u8 J/ M. f4 s: [7 ?
            }
    1 B4 A* q& x+ h: J        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    , Q+ a0 A- s9 d) V- l3 }  ]        queue.traverse();
    1 C2 O, A1 k2 t7 ?        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ! s) Z0 \: }. b% S! e6 Q
    7 }% o+ o& G5 `7 H) w2 \9 z# j        //第一次出队:取出0-15
    * l. d7 j0 I1 u% V        for (int i = 0; i < 16; i++) {
    : i. T, R; |" k            queue.pull();! r) r0 d, m0 {8 h  R1 _
            }
    # z  c: V- ?+ t! x        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());' e: a2 j0 f5 \# E
            queue.traverse();3 A: Y$ P' M  D" A1 p4 a% \$ _2 M
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());4 L8 ?- A/ A" \$ I5 H
    * \* z' x% t& Z: D# @( L7 H

    3 c' e- i% P) v5 E* a* E* a9 h        //第二次入队列:压入16,31
      P6 r* Y$ n/ \; b2 |        for (int i = 16; i < 32; i++) {
    : u: \" Q- i/ p/ |. X            queue.push(i);
    ( c8 p, W) z+ G1 J* G% D        }
    " `$ d0 m5 K/ r. U' I# {7 K        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    & H. q6 i2 E4 u; l! `8 d! A        queue.traverse();( {5 Q1 E/ ~. s/ [, [
    + x; h# T( ]5 `0 b$ s

    8 ^% ~: N* ]- _5 h3 V7 l3 c        //第二次出队:取出16-31" a' C5 Q, m% M5 b
            for (int i = 0; i < 16; i++) {
    . z3 X" @: a1 U            queue.pull();) m; C- _: P% c
            }* x0 A, ~1 P9 o% I
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());5 u6 w# `3 c% H
            queue.traverse();8 k; ^% b& V. d' _$ U2 E
    + V# l+ v  y+ E' H/ ]* ~
            //空队列出队报错! ]+ F& F2 d9 q7 V: W# V( V
            queue.pull();/ h" m! \0 a1 Q8 E

    ; ^$ b) x+ F. S5 ^' F    }, H* I: [7 `  j8 C% @
    }
    4 f1 j* G8 K( i* W% |) [
    " W/ n9 U1 {+ r/ @7 m
    * H3 R% W, H$ a" y! Z* y# y8 v+ Y' E2 S2 Z: f) F

    - X$ \, j2 z- v1 m. w2 W/ Y, W, T* M2 |  _3 w  Y, W- e" O, l) N

    # F7 L& O- M( D6 v' h+ i/ `: i7 F- l- J
    5 ~9 i- Q+ d# _! f: S
    ) }# x3 z/ l( L: E$ D# W* x
    ' B" o) C5 o. W4 O5 r+ t
    ; C; J" e- {# r
    , Q& i$ N6 C5 l+ ?, z( b

    3 e% {: ]) e' `( a' F/ q8 g- y9 `. U5 F6 b8 o' n# s
    ! E: m5 H/ P8 e& d1 V( Z
    ————————————————
    ) f: i( g7 y" F+ i- p版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    7 p: |5 I. [( D* |原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785: n2 X4 h4 e' n: @, ^( F& D( C
    8 ^& J" R7 k( ^  `
    $ m, q3 v; X9 p0 c' Q+ A1 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, 2026-9-10 10:34 , Processed in 0.570217 second(s), 53 queries .

    回顶部