QQ登录

只需要一步,快速开始

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

    % b, _8 \/ [& T; F4 u数据结构——栈(Stack)与队列(Queue)的手写实例
    0 N1 A9 g; j, }( m4 ~- K
    & N5 W0 \4 S1 s$ T6 t+ C[color=rgba(0, 0, 0, 0.74902)]文章目录
      : {. y) m- _4 d1 n% w+ N* O
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        4 ~$ Z1 v  I9 U  z& B- ?* d
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试. ~3 _/ _2 |8 P. r
      • 三、 用数组实现队列' |# ]9 P& M, }
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          0 a' b! k) S; w% U7 c: s: u/ j# K& _

    ; j& _" s9 k0 H9 O) d- V& _' ?' w1 c' P* P4 t; @) N& a3 f
    一、 栈与队列的定义- M, T2 @) n. M+ A
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。7 s: k' W1 @) P/ L9 i
    1.png $ G% M" ]/ r8 f5 p5 P4 }
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。+ D8 x( `/ G/ }7 W
    2.png
    ) b7 ^, d7 Y5 k% y$ F3 T, G$ G6 O1 g0 K/ o. d! v
    & D+ T+ X0 b5 n, a
    二、 用数组实现栈1、栈的接口定义7 w" }# ~9 f6 b& k& D5 e
    /**9 y" S& F! p" g4 @" R: j5 q
    * 定义栈的接口4 ]: Y; W8 [: W  l
    *
    - e& W9 W  @, t: r  a * @Author zhuhuix
    - Z# N, C/ v* W! w * @date 2020-05-01* l/ {% i) @  y* b: g& p$ j
    */
    # H& C/ n2 V: V' M' t/ L3 a6 w. T, hpublic interface Stack {2 M7 K, s2 b- y, Q; Y) o
        /**3 J( M  r1 J3 u; k3 Y2 p
         * 入栈2 |1 m5 Z9 C% }% x
         * @param object 入栈元素
    4 g- f& p4 N4 F& b( c* I( B     */
    " z* P# U2 A1 D* ~( U4 C- D3 x    void push(Object object);
    6 }' O0 y" q# E; n6 N2 i' ]" V4 D" L5 N5 [
        /**
    - C' Y3 v0 j8 M3 l     * 出栈
    4 {5 o+ S* N3 T7 y: J  ~) M% k     * @return 出栈元素4 l  Y; f( K( g; D
         */
      w+ R6 b% D2 D    Object pop();9 l# N4 a+ c' a  N4 L

    ( S0 Q! P% Y0 Q4 g' Q9 A( M    /**! E9 o" a- Z6 t* M1 k6 r7 ~: k; p
         *  获取元素个数9 t+ s7 r! p/ i8 ~
         * @return 元素个数% N# G( x! O0 ^9 P2 y4 F; z
         */
    1 G2 j4 z$ ^, j, I/ i! T; e    int getElementCount();# M: h% `; G* P( L

    ' X" G) a7 r, r$ @4 F- Q$ g" u/ V    /**8 l# P; V+ k* v% c$ i
         * 遍历栈的元素( J0 ~& ]% a" a# ^) W; g6 z
         */
    ; f9 s" ~- h7 _& Z    void traverse();$ s) z$ |# c; z; R' Z2 C8 U, R4 Z
    % \( D; h5 l. t; ~! @; e& B
    }5 g1 R$ Y4 u' x$ P
    2、栈的接口实现/ `# h/ V  ^  `5 \2 \# l8 H) i$ ~
    /**
    0 @- Z5 i* w/ X& G- j, Y * 栈的接口实现
    # p# `5 |% a! D# b- R: [ *$ }. x" T4 Z( J. V
    * @author zhuhuix6 e7 a/ a4 n5 Q: a4 X
    * @date 2020-05-01% c& f8 f' j* X& {0 [# @
    */
    & I! d! A" g+ _) j( k% _/ Vpublic class StackImpl implements Stack {
    + z2 ]7 Q6 T- m$ E+ U1 [8 |        2 M( ~' C0 V& Z, N+ V% u
        protected Object[] element;
    7 C9 ]9 a$ z4 a3 G% S$ ]8 `8 ^  b6 R$ c* L% w; q5 Y
        protected int elementCount;
    8 H' s" p. Y. s, L6 a& O
    6 [- E3 F2 c+ _    private int defaultSize = 16;* C, o7 a% g* f6 y$ O1 w( A! }5 `8 c
    . v7 }7 l& l8 g6 r
        private int maxSize;5 ?4 s5 Z$ O  ]& q% b- e" b) i

    ( f& S8 U! Z, n) c    StackImpl() {3 K. \, g" h! M# z& i6 O
            element = new Object[defaultSize];+ z2 ^, @4 U* V5 P0 A) O5 A
            maxSize = defaultSize;
    1 w# J! `& A" g  j) e5 c1 ]2 ^$ e    }
    & @  T8 e5 f- [9 X5 ~
    : {$ m& }6 {* Q/ {5 v  ?; `    StackImpl(int size) {
    & i. t% K8 k# ?. A        element = new Object[size];" N1 B3 l/ l& W' F+ f) D3 ?* ?
            maxSize = size;/ ^8 d1 X) t9 I
        }
    ( r, R0 k+ {% T9 G* v8 b1 _- u- m9 @5 F; L+ W7 s3 k0 t
        @Override. B1 o% i: Z+ p
        public void push(Object object) {
    # |5 m8 m5 K- b4 y6 A$ R. k8 g        //如果元素个数已经达到数组的最大个数,则进行扩容9 P& T8 y5 U$ |
            if (elementCount == maxSize) {
    3 y4 Z+ ~# }" H7 ^            element = Arrays.copyOf(element, elementCount + defaultSize);# M' U' v# `' V) ~/ J7 F+ s) K8 R$ {5 l
            }
    ; y2 r  D/ c3 _; V9 y8 `        element[elementCount++] = object;, p; Y: B+ N2 F$ O( ?
    / B9 U1 k8 g9 y5 C, g$ w
        }8 [, q. l" o8 Q" }( e2 m$ G# L
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    / ]! m( G# l( a6 j: S% D0 W    @Override4 N) e( Z& S8 u9 @) T
        public Object pop() {
    " T2 H8 n* R5 P7 Z/ |0 h2 g% e" A        if (elementCount == 0) {
    ' Q' Q" A9 U# z8 B            throw new ArrayIndexOutOfBoundsException("栈中无元素");& r; n4 s3 I4 q& O/ m) D
            }1 ]: ?+ g) Q! t
            Object object = element[--elementCount];
    6 Y0 O3 F( U- R! n( a$ H& g        element[elementCount] = null;
    ( x+ t& e; W" q0 `        return object;
    , g0 W, g) C4 s/ [    }
    4 i) M: y+ @, A" W9 b$ g5 o
      X7 P: E+ `& H3 y    @Override
    0 {+ C+ w  S  T! |$ z* O+ L; k    public int getElementCount() {
    1 |4 l. L" ?/ y2 g4 `        return elementCount;. Z# M. v+ }2 _5 a5 R& ^
        }
    % m, S* r) j* C! ^
    " v7 Z: ^: e. v; ~9 Q# y0 H    @Override
    + |; ]& U! G( D4 r    public void traverse() {
    2 H% I# m5 S/ {. H* ~        for (int i = 0; i < elementCount; i++) {
    6 _- @% s% p  v# T1 g, U) r            System.out.print(element + ",");5 c# z3 K2 Z' i' {& B  @
            }
    : U  S9 C' H2 W0 r, r        System.out.println();
    6 t! d* x3 Z1 a    }
      t5 y6 g& [" A% y% |" g+ i}
    ( u- V" Y) a/ g9 Q+ L2 h3、栈的测试7 B  T9 d9 I3 L( T5 }  ~! q
    public class StackTest {, m+ ?( j: T. t6 U& ^% V" _) W
        public static void main(String[] args) {! R- @& N+ U( |& K& t& ]
            Stack stack = new StackImpl();
    3 Q* w6 o4 A& Y
    , T7 z" i; k5 T3 n: W        //第一次入栈:压入1-15
    & i, X5 U0 x; s0 `9 t2 v: ^+ j        for (int i = 0; i < 16; i++) {% B1 |$ {; U4 _* R; B, @% n
                stack.push(i);& M* |: o8 x7 q5 m5 U
            }0 e9 t! L: Y% Z3 e
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());  l* R3 a. P' N' Y! d+ |, Y3 b, `7 W( |
            stack.traverse();  H4 H& ^2 ^  @- `: H* \7 K+ @
      }' _8 M; T5 B8 |/ i: |
            //第二次入栈:压入16-31
    1 ]# t, N3 f) W$ C        for (int i = 16; i < 32; i++) {
    5 O# u) n6 G7 }) L            stack.push(i);
    5 }% t9 D( E- D4 C0 F/ N2 |/ R        }
    # s/ v$ x7 [/ }( s$ d        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    4 k: h, k$ e. m( c2 {$ S        stack.traverse();( t: Q5 z. u" L+ k

    7 M6 p: K# Y* {' G9 t8 Q        //第一次出栈:取出31-166 v! G4 x% c8 [; Q
            for (int i = 0; i < 16; i++) {
    - o- K% R5 E0 G, F            stack.pop();
    4 H& s/ Z; M* }! t8 i. V2 B" @/ N        }
    8 w" {8 ]3 T+ y        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
      f  x- ~- o1 z        stack.traverse();
    : S# p! P. @$ Y' `, Q3 m5 {+ s" d4 p! m
            //第二次出栈:取出15-0
    1 j) |( ~8 [0 m6 g; ~        for (int i = 0; i < 16; i++) {% d% U7 i1 c  n( f3 K
                stack.pop();
    " s$ x  ^. p2 @2 A: H, J        }
    - C* d% p# B! k8 U        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    : a; x% ~( h; K  J2 K        stack.traverse();
    & z3 G4 a. c( X' E, k8 R
    ; d$ _( Q$ Y7 i9 L        //栈中无元素,出栈报错
    + Z. K' T3 s1 o- t/ v        stack.pop();
    % m) o/ ?( Q$ }  d; {! W# R$ y
    - T1 ~" a% T+ H3 v' |5 x    }4 H# U# D' n! I' r6 I2 K
    }# ~1 X0 s0 s) p: r5 w
    3.png ! v3 J0 ?$ B; ~7 o

    8 ~2 A+ F- z+ P; V
    4 ]0 q5 t6 A' J. d! z) m' F' p  D
    ; V- ?, D( N" l- ?6 R% y三、 用数组实现队列1、队列的接口定义/ L$ W- F* J( D4 r' G
    /**/ V1 `& H- ?3 d& `! {1 v
    * 定义队列的接口
    - R$ q$ D  \, ]' Q" G6 @) w *0 r4 L: D3 F" i0 h3 x3 K) j9 N; g
    * @author zhuhuix. t& x. c" H1 t9 k2 \+ {
    * @date 2020-05-01
    . S. U; X0 |- t; h( g8 ^. w+ \ */8 N3 [$ O# c, _) h
    public interface Queue {2 K. Y+ K' i( D* t
    $ K: E8 I: E# O4 b" l
        /**0 R& g& h4 G% h
         * 获取队列大小
    + a- o+ o- @6 w; ~5 X, J     * @return 队列大小4 ~2 y$ m. o$ t0 S8 L
         */9 \: ?1 u& V$ H5 ?8 p
        int getMaxSize();' S2 B1 \3 O3 N. F* ^2 D

    ( q" X2 l: E2 |& R. u0 t# z+ }8 h$ m    /**
    6 x7 Z- {2 T3 @( y* r( ]     * 入队
    1 `9 H9 G! t* R4 |     * @param object 入队元素
      \# J: V$ Z5 A3 M$ u; p% Q- F     */
    & B. |. O  M0 Y# i( b9 M    void push(Object object);  c0 ^; l0 j/ I# Y# w3 Y2 K7 I/ Z
    $ K5 y& L. L* y9 b8 N4 ?: h
        /**
    $ H# ~4 f4 n" \     * 出队" R. r8 O+ T$ R3 m+ w! D
         * @return 出栈元素9 v% h& e. \  B% D8 B
         */
    . ~% z  C* h; n* U6 D- ^3 Q    Object pull();: d# t1 c, u  W) k& ^& T
    4 f6 H! o6 e: N6 H: ]
        /**
    " ^. z+ u' E6 J, {* Z. `- @3 m     *  获取元素个数* z4 A5 s. ^9 W: i8 [8 A
         * @return 元素个数) Q) w( w  F  l: `
         */
    2 T; O7 i6 q+ Y. p    int getElementCount();
      m. {6 L) z+ R5 m. d7 u2 \1 M& g" v4 ~6 Z4 g- c
        /**5 }# x5 u# r0 ^1 a7 h5 o3 \( S
         *  获取队头元素
    0 \% i4 c7 P9 S! b+ n. m; F5 F6 z     * @return 队头元素
    % B# Q7 e) B3 P, N     */  i0 U8 j( A" Z) [8 D! F* U
        Object getFront();% N/ A+ ~( d/ R

    , F6 W/ s( q9 b2 b    /**
      r% k# R: m+ U7 D5 W0 B/ s9 B     *  获取队尾元素( S6 r' S& E* x: b+ R$ m3 O# k% w3 s5 ]
         * @return 队尾元素: o, J3 t. t: a. Y- d- B8 }
         */# G" ^9 [5 ?# O8 C+ J; ], g/ i
        Object getRear();
    / x# u9 U" Q$ k/ N6 I: r" i9 V9 N3 U1 Y
        /**
    9 g/ ~$ K1 j% V8 x: o& O" a     * 遍历队列的元素
    7 b7 I8 R5 B: J7 _4 @     */7 P2 T1 z4 J1 H! t
        void traverse();* N# e$ M+ K' M) E0 _9 T
    }) M" M9 m( }! w5 m5 p1 \
    2、队列的接口实现) }: ]' C5 g5 L) N2 B8 Y5 o( Z7 s
    /**
    ) Y9 W0 I- l6 b: h * 队列的接口实现5 G" Y" p& g8 e5 h& z4 X- {
    *
    - M* t" {( y& @+ R * @author zhuhuix
    6 o) J' Y4 W5 g( F" N: d * @date 2020-05-010 c7 v7 u6 K5 T- _5 g
    */
    ( M% Z( X/ Q  t9 l' `! Rpublic class QueueImpl implements Queue {3 i$ }1 r. p" [; h$ o/ n$ T

    + _- P8 K( E8 O3 y! m    protected Object[] element;) V2 [7 N, \# c- ?$ P0 s- h
    / ?2 a, q  m) H7 q2 R. I: g# j
        protected int elementCount;0 y- e- c6 N" D
      O6 `7 X) \, Q, M/ V, w
        //队头
    , O5 {. A1 t) n/ T( c9 j    private int front;; x4 Z/ C& H+ q; \+ T* G" i6 h+ J
    $ q9 Q& Y; @; Y/ r; K
        //队尾
    8 ~* D3 N  O7 }# q$ m( G    private int rear;
    ) Y# K$ f2 c+ ]1 o
    2 \. Z7 u( E9 e1 m1 \! i6 H: O    private int defaultSize = 16;
    6 l. P4 }8 u; ^+ m. z; h# R0 R$ z+ W( o: K; c  x9 q
        private int maxSize;) L6 A6 q* [% z

    9 i( ?3 R$ u* o9 l2 P, S0 Z; ?    QueueImpl() {# x! o5 N1 b0 f5 @! `
            element = new Object[defaultSize];% Q( V# l6 I) G, t/ E% g, C
            maxSize = defaultSize;
    % W: h% [3 O' {" {' w% |5 O* A( q        front = 0;5 w( x9 [# S* G' w$ ?& N
            rear = -1;) [9 z4 k. i6 Q% b
        }5 C4 p, A* R; j; |  n

    3 i- z: p+ H3 h  ?3 W# A, s' M8 n- l    QueueImpl(int size) {+ u  G$ v/ Q& s; k* Q( D! y* y0 A# |
            element = new Object[size];# n5 N( X% X( x. T5 F4 q
            maxSize = size;+ L# X" w& i! q1 Y% g3 U
            front = 0;4 f# X+ G$ j; r) w8 e( U6 P9 g
            rear = -1;
    " Z4 s3 C$ l; l2 ^& Q& Y6 z    }; ]% `/ F) u) B+ o+ L
    " U/ [$ v9 j+ i2 D6 t, J
        @Override
    8 R# l4 X+ B/ ?9 x5 W    public int getMaxSize() {* d  |3 Y; d/ V+ G
            return maxSize;
    % Y: O  J/ g: L4 [    }
    $ n! k! m, O8 M  P6 p8 _7 d1 @5 `. k: ~1 ~, D7 S1 B) U
        @Override
    " ~. V8 W( P/ t% l6 n# x; o( F6 n    public void push(Object object) {
    9 H3 J1 ]: }( f2 b$ G, I$ O. ]& D        //如果元素个数已经达到数组的最大个数,则进行扩容
    ! F" E4 \6 q2 \) H. g5 r# R        if (elementCount == maxSize) {
    6 H' U3 c8 t6 |8 b5 w            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");0 a# Z, ]4 b  w- S" P( I% Y
            }. |5 [& W1 ~' d9 i) Y
            element[++rear] = object;
    4 P& r8 M9 i! K$ J; {6 S        if (rear == element.length) {  s  T5 ~+ s5 L. }
                rear = -1;* c7 L9 k2 k& ^0 d5 k' [& z7 v
            }! C8 K2 r' _& V. I4 b( _
            elementCount++;
    & r/ N2 F/ L+ M' i# ]3 o" M    }; o6 D1 N0 h2 N) \9 H# H, w5 l4 S

    5 u+ ^$ a" O) i9 [9 G! U    @Override1 d4 ~+ b: P+ }
        public Object pull() {
    7 Q0 n7 i. f0 J1 x3 m        if (elementCount == 0) {2 G) l+ @. J/ G  c
                throw new ArrayIndexOutOfBoundsException("队列中无元素");! O: g8 Y( X+ @. j* }
            }
    5 h$ y' X& X+ c9 y. ?& }$ [3 q        Object object = element[front];
    1 f9 l) B1 z+ L! m6 o: @        element[front] = null;
    , n! P" x% H( u8 H/ y( U% k4 h        front++;# b, n% M$ E% m! ~3 @$ i* \- \
            elementCount--;
    0 G1 ~% c' E+ `1 q9 l        //队列清空,队头队尾恢复初始值# Q3 i6 f6 A! n/ t( b4 I2 c8 f
            if (elementCount == 0) {
    ( r2 p( V$ C) o            front = 0;. j( K3 m# B1 S$ ^! J. S
                rear = -1;
    ! V3 q% v5 N0 v        }
    . X, k5 @# `* v2 h        return object;- O) g# u0 w: j- H$ o8 Q8 t& X
        }
    . J- D1 Q! ~- q1 Q" u9 e) A) R. H- g- E' _1 G
        @Override
    " u9 i% s$ n( @* Z# h    public int getElementCount() {
    # k8 D. I9 f5 [; X8 m  M5 C        return elementCount;
    0 S& s! [. p5 u5 }    }
    0 p2 L- m( h+ o' q
    5 c' T7 J* a" z    @Override5 c" l3 k0 w% j: `5 N1 d9 p/ y
        public Object getFront() {4 e7 f5 z. W) f; H
            if (elementCount == 0) {
    / a: s% n! w7 B            System.out.print("队头无元素");1 E( }' T" _, n9 V& B
                return null;
    ' s* P5 t8 W$ x+ R        }$ D  A0 J3 e; y; e# g
            return element[front];7 ]+ O0 y8 j  O& X
        }. J2 M8 W9 k+ ?2 I9 D2 F0 f) L; G
    9 W! ?0 {2 Q& g% h" Z4 o' y
        @Override
    & E% k# ~8 S! N    public Object getRear() {
    7 p9 C+ c7 O7 y/ N9 f5 U        if (elementCount == 0) {' x2 I/ z6 @5 G
                System.out.print("队尾无元素");
    0 w* g" ?6 d$ p1 ^( \" ]. Y            return null;. o  V7 u9 k0 M1 \9 G5 M
            }
    6 s; {( G3 `& c1 H        return element[rear];# R) V2 g: O: O- w  ^
        }9 q5 i; h1 ?% X! G) L3 @

    + F3 A, V! D2 a& \* w    @Override
    ) ^; J) E/ I" |9 c    public void traverse() {+ x4 ~; E: b5 C4 r) l1 B& E1 O5 X
            if (elementCount == 0) {7 C: i' h* D9 d2 x% x! n$ Q
                return;
    # o$ N* O4 X/ `5 @/ o% Z        }1 C( i7 a; a+ b( R2 \* b  v) e
            for (int i = front; i <= rear; i++) {
    - S1 z" q5 w- S& M; N            System.out.print(element + ",");1 i; {7 O6 M  N1 ~* z
            }6 v* x7 @" S, |9 P) V
            System.out.println();! g7 Q! f  p& g3 q" @0 T# o
        }
      k" Z. Y8 Z, u}) J" Y* B3 i- U6 X; S( O) U+ p
    8 R: m( u; l( _1 q. d
    - U0 c% h0 P# a, ~- n6 k
    3、队列的测试* k: R& p% d- A
    public class QueueTest {6 L9 Z) C, U) L; |" V: s
        public static void main(String[] args) {
    3 A# E9 r! ^5 V- M; w        Queue queue = new QueueImpl();
    ( ^# x! h- Y" b! q/ P) M* u  a. u, S) l( o7 n
            //获取队列大小
    2 M, Q5 i, [; ~        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());  Y! B: S$ z5 Q4 Q# ^$ K- y+ e( C
    / A7 l( d, n6 b1 A9 O
            //第一次入队列:压入1-15
    2 G3 e3 m; t: u$ T  ~! a& ^        for (int i = 0; i < 16; i++) {% Q0 d- d; w) z: q0 X5 E
                queue.push(i);
    ) @5 d" ?! D- I        }
      o# F+ X% u: j2 ~        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());) X* v6 q+ V6 A. y5 i9 f6 R
            queue.traverse();3 h; x; j/ n! m% B2 I8 n& j: |/ i
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ! ~/ i- _4 u- w9 C: H/ u) _7 X% [7 o! }* a! {) J) i
            //第一次出队:取出0-155 \; h" ?8 {/ J" a/ O) [, {5 @" |6 q
            for (int i = 0; i < 16; i++) {
    * l' c, }6 w, \/ g1 M! D5 L2 W( X            queue.pull();. ?) l: `9 p2 b
            }
    * N( L, [9 y) }4 k1 ]        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());$ {: j4 W5 F$ g8 E
            queue.traverse();
    ; h0 T+ S2 [6 I        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    0 F! }3 F4 S/ x7 R5 x5 s% n5 @2 Y/ I# p' [# }: x

    7 o: B2 i1 r, o& t0 X7 s7 z$ ]        //第二次入队列:压入16,31
    * M2 x& i7 B1 {* c7 x$ b, T        for (int i = 16; i < 32; i++) {
    2 j7 x( I1 c% d& {" F. e0 h            queue.push(i);
    ! Q, l8 Z  b- F: Q        }
    1 I% t# t% z/ t        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    8 v: _# f" i* j  b% E        queue.traverse();
    # ]" f( e' }' o: T! D3 i4 j3 @4 o' T% l/ E/ L
    5 X" [: V4 T. B0 K7 G3 u* K
            //第二次出队:取出16-31
    6 g4 T# O( C' |! g" l        for (int i = 0; i < 16; i++) {/ M% m8 \" h+ t- W. x8 f" d) c7 l' S
                queue.pull();
    & Z6 Z9 q1 v' M# l        }6 e; S4 S5 n! Y
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    : D! i  [- N# w1 i        queue.traverse();
    $ Q7 S, z" M7 e# o  G! D4 x) A7 U1 V* b' t, O
            //空队列出队报错
    & N3 I5 m  v: Z; @$ k7 \        queue.pull();! S- w2 U: v8 z; X# e) H; V

    6 M$ Q7 _3 O# R# l, ?8 F9 s    }
    9 p, F4 k' E- T1 D8 \9 l/ {9 u}! N: X* U& q# [* v

    1 d8 S/ ~. _& |) ]6 v/ S
    : q) }+ g! b7 ]
    ) n2 P- r7 i" P! `( a0 F, J# _) |

    1 j2 ^4 V" t0 d$ y& [1 w# R) P) U& ]

    ! t: V# t2 k. ]; f) U% ^' W3 Y; v, I. k$ m% j5 _
    ! t* r; N. H4 o6 }/ Y2 E
    6 V7 F4 |5 G" ]. ?% m6 l/ p

    ' u, m- f& U9 H/ d% [1 j/ u2 @
    - C  {0 p  J2 i5 ]0 k" G1 V& C1 l. l

    " X  L/ _: F% P6 g7 O$ K! X* B% b: e" ]2 E' K  t. b
    ————————————————8 `+ ^! o8 K1 K/ o3 k
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    * L! u) Y$ v/ E原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    5 W1 u) H5 l. u
    : U1 l& @& U, u8 _" v3 `0 P; S) _0 J" `9 n3 ?3 w& m
    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-23 01:42 , Processed in 0.292450 second(s), 54 queries .

    回顶部