QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1681|回复: 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
    % p1 i; ]! Z) W" I% N9 J
    数据结构——栈(Stack)与队列(Queue)的手写实例
    ; b; \+ I" r  h, b# k
    . Y1 Q, y3 g1 S- S[color=rgba(0, 0, 0, 0.74902)]文章目录
      # u! M: f& t4 a' g' n0 l
      • 一、 栈与队列的定义
      • 二、 用数组实现栈9 \* N4 O! {) a" ^' K+ \$ x
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          ; H  V8 Y9 D& W( T& z* K# w
      • 三、 用数组实现队列7 r! |  m) ?+ D  |: m6 X
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试8 i4 t- r: g# Y( O8 u

    9 A" Y# u1 \' d! ^4 T2 g# L( V3 H5 j" t: t8 e) w
    一、 栈与队列的定义
    & v8 R& n* w! n. `# {  `* Y栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。8 c2 d- S' K$ Q7 n
    1.png 9 B3 t' Z: b6 k1 C" H( N
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。# G5 a: W% R: {+ y* F) ]) S
    2.png
    ! q( k+ {1 k  p/ H& f
    - {" u* ?7 w: P+ X" u! n1 T2 W: t1 u: I4 O( Q3 M
    二、 用数组实现栈1、栈的接口定义: m) ^5 I# K0 H% y' n; w
    /**; J/ F2 {" j4 C9 o- J
    * 定义栈的接口, T- ~2 w  T  ^! A9 w
    *
    8 G6 O* h& D! \- [- p * @Author zhuhuix+ q9 w1 z4 |: C" x4 H
    * @date 2020-05-017 @" k. v/ J: j4 l; C+ ?
    */7 i5 K/ d& P/ Q& S
    public interface Stack {
    " [! _, D1 x& i% I1 O1 l% k0 O/ _, `    /**
    ) J! M2 x' F0 m: F6 Z2 x# U     * 入栈9 L/ @' M- U2 K
         * @param object 入栈元素
    $ U5 `) z: E, O% |# o     */
    8 a  G: m  J' B, ?9 z    void push(Object object);3 S) [" m# u: ?7 x! b
    $ p. \0 x# @2 n# X) [; g: F
        /**
    # q5 A/ v0 Y/ D' R  q' {1 P     * 出栈
    # |- K/ O5 P- j4 Z     * @return 出栈元素  z3 r7 R- U* t( Q  \' a9 u
         */
    : a6 K! t5 ]2 D# c2 o    Object pop();
    ( L3 Z' ^. j8 S( W6 s2 k' p7 ~- Q9 a) O" Z4 m6 b, t
        /**7 G9 R% \0 G9 l+ n: m9 C. J$ q
         *  获取元素个数
    ( |' F3 l5 o' t& [! z$ Z" p     * @return 元素个数. Z. U. A6 p8 }$ d* N+ N5 _
         */2 s' w2 {3 D- O4 v/ C; Z
        int getElementCount();9 F% f' r! t1 |8 p! M

    ! \* E; T( G( x    /**
    . v3 b# K4 Y- l) O) c     * 遍历栈的元素
    1 V- q5 V5 L; i4 Q+ r% a7 N( I     */
    2 R& R, j2 k; ?# ?    void traverse();
    ) e/ H8 m# n/ x! t' W8 E" d/ f' h4 [5 z# b2 I, `
    }3 _  q4 Z8 i0 I. Y
    2、栈的接口实现6 b* z6 E0 L# d1 h. L5 Q
    /**
    / |7 O/ H8 I* i; b( e& b$ J; { * 栈的接口实现8 X& F) D3 z7 C
    *
    ! ^9 P8 f3 h+ U+ ?  G * @author zhuhuix
    7 W0 _( z* z& @; d' }5 k: A * @date 2020-05-01
    / I% r' Y& |6 l( H9 ]1 X */
    8 S  F9 u) X1 l5 [public class StackImpl implements Stack {
    0 J9 k! U6 W6 Y1 n& b% \- E8 z       
    ; `' o+ F  Q- @( _9 N" ]    protected Object[] element;
    . X6 h+ B+ i: v; H+ h: G0 Z& w$ u' K9 D0 O! c7 y5 ]
        protected int elementCount;
    : @5 H$ i0 c9 o; N9 Y' d7 i: X  |# O# p4 W+ L: ~  ^4 G
        private int defaultSize = 16;
    % _& i( j4 M5 P/ n" E7 w4 b2 n% [# m$ a, i. N9 c1 J& S* n( d
        private int maxSize;
    6 e) k; O3 E/ p$ u" z
    ; w/ L9 M6 i- O9 T    StackImpl() {
    . S7 A9 Z( c# H; I2 q7 X        element = new Object[defaultSize];6 o6 U! I4 Q" t( D
            maxSize = defaultSize;
    $ u0 i$ {  l9 C; W+ S- G    }
    # ]' s$ n- g8 _9 i8 l' \6 f3 @+ }+ q/ V- |) A/ U3 H3 d
        StackImpl(int size) {
    / E, Z& q, ^5 ~$ n1 n- \3 D        element = new Object[size];( [% y" j/ R6 m
            maxSize = size;. v" q1 x( s" F+ F/ o
        }* J1 q6 h! N7 @  J- q; J

    9 B8 f6 o) n2 n' A% s: X    @Override$ O/ J' X" ]% ?1 Z
        public void push(Object object) {
    : R8 a2 G! e1 N: e        //如果元素个数已经达到数组的最大个数,则进行扩容& V" e9 W+ F4 O" s# N6 B; M/ L
            if (elementCount == maxSize) {
    7 \7 x. t% P, Q$ o1 f( r9 o/ W  C            element = Arrays.copyOf(element, elementCount + defaultSize);
    6 r" W8 n( b# A4 h) W        }
    & Y3 ?( W. I9 q/ t3 S0 C6 p, ?6 K        element[elementCount++] = object;2 f& V7 R: R, M8 V# ?, i- Z2 ~

    0 ^: n. u/ d( ]: M1 s3 d    }
    0 F0 F& C$ ]" L" {" ^7 d4 T* e# z        // 本代码未实现数组的自动缩小,具体方法可参考JDK- p& E" q. F+ `6 ?, v
        @Override
    3 U6 }4 N( d& b2 q    public Object pop() {
    / X; M3 u: Y: x+ H& D  |        if (elementCount == 0) {
    8 T/ ]1 G9 v, }' n* ^# G            throw new ArrayIndexOutOfBoundsException("栈中无元素");" g  {4 [; I: I
            }
    $ B- y+ @) e5 f  [1 J        Object object = element[--elementCount];/ w- `, u; b/ S
            element[elementCount] = null;9 c7 O2 _+ `" z+ _; t
            return object;
    / _8 d( N+ ~  d1 k& z' M    }
    - }5 Z" |& ]3 k$ l& U/ y' S
      @0 w& H; x4 [- T4 w8 Y4 Q' J/ v: V    @Override- A' S0 D: ~, h1 t" U3 C3 A
        public int getElementCount() {2 F4 o) i' w% `$ K
            return elementCount;, K* f* z7 P% K# c' u
        }
    ! P: B/ }3 j& z8 V( J/ F  c1 ~- U( z. L6 A0 c1 i. H3 l& Y
        @Override7 Q( l% G8 E# N
        public void traverse() {
      N/ I4 c4 a( e# F2 P% j' D        for (int i = 0; i < elementCount; i++) {5 R- t) S7 g1 Z; A) @
                System.out.print(element + ",");
    . }6 O/ g; V# t# R. D. ^        }" `5 ?+ E# }; P; b$ r3 d
            System.out.println();
    ) j: Z( t3 O" f- Q! X# D    }
    9 j# U- L% `6 k$ X2 \- E}
    $ v. L  `+ y: V- ^% ?3、栈的测试
      ?$ j2 J6 @6 @# F& cpublic class StackTest {) I3 u# d& _( h' R/ S
        public static void main(String[] args) {
      k" T, \" P( c, w8 t1 L$ s        Stack stack = new StackImpl();
    7 V: ?+ ^& Z  u( K/ A
    ( u0 ~5 z% @: c/ J2 l        //第一次入栈:压入1-15( j2 x# }9 h  \$ Y( y: f0 X
            for (int i = 0; i < 16; i++) {$ @" z# v: P( V5 a5 q! @
                stack.push(i);+ R2 o5 `4 l  m% {/ X
            }- [+ z! s4 S  P0 {
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    % d' L) a1 r9 F1 [1 M. G. u        stack.traverse();" B& z( @' i" h
      {# {: h1 c' d5 f' L
            //第二次入栈:压入16-31
    9 a8 j2 }5 r9 b/ Z6 p1 R2 R- O        for (int i = 16; i < 32; i++) {! K6 r4 I/ \, j' \4 b; b
                stack.push(i);
    + g! V) w  z  Q) j5 ]7 ~        }
    4 L& D) w" x" d5 E, z4 g/ \        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());: F5 w: j2 P; D  v' ^  M$ J0 m
            stack.traverse();
    ) c1 V2 q* I* y) s  P  s3 Z& C( i9 g( z' S
            //第一次出栈:取出31-16
    ) x, L3 [3 u" s* Y* C        for (int i = 0; i < 16; i++) {
    ( b1 H) C8 O4 [$ o% O4 `* V3 w            stack.pop();& D9 E3 n( c- V1 ^4 F; `
            }
    ; `# E: v2 y, i% \% i7 g8 P        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    * R! r. S; j  f8 G1 A6 G        stack.traverse();8 f  o- f) b. V4 ^
    % B: q; ^  Y# K/ T. _$ P
            //第二次出栈:取出15-0" F4 K6 [: h- S$ [3 \% l
            for (int i = 0; i < 16; i++) {6 k* t5 ?% `+ J$ A
                stack.pop();
    9 t' m. m- i$ V" C: V' u        }- \! n  _% m" o2 M1 j6 y6 _
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());* L  U/ E& I8 ?1 f
            stack.traverse();% G# @& S% A2 h6 J" e8 J4 C9 k$ T
    5 V7 f- ~+ l9 G9 V1 |# K3 J# i
            //栈中无元素,出栈报错
    ! W$ G8 P9 Q) L        stack.pop();% A( k  J8 g* T# v' Y7 X+ ^" U2 u
    - P; a) G: \$ W9 H
        }* T0 E8 }$ h' ^
    }) k6 r. C. a; c
    3.png
    0 O" }8 K' U' E+ K* {& r0 e
    1 D' y" g5 Z- o/ _9 c
    3 B1 s$ }5 `: c) N$ k
    - E9 U% D; }" c% v6 L5 @三、 用数组实现队列1、队列的接口定义
    3 z3 K* t. \7 F  X* _# O/ }/**  u' W  [4 {+ D: L& _$ Z
    * 定义队列的接口, Y6 Q0 L- [1 Z
    *
    # ]4 `" d/ r+ ~- L9 O * @author zhuhuix
    " W( o# I) P3 E( B8 ]2 F9 } * @date 2020-05-01
    4 u. a; N) o* v, X( N3 H */7 u( ?& W; S  z" Z9 L
    public interface Queue {, }5 T4 {) R' z4 T
    $ [+ `3 j1 B/ j. |/ f
        /**
    ! Q1 M& @+ E# _9 \/ X! T/ H, d     * 获取队列大小: \; j! j: z. R; Y# w9 G
         * @return 队列大小! ~+ \9 N/ {9 E
         */
    / m7 ^6 _2 V, m; j    int getMaxSize();" Z3 K0 B$ X- u& `) m/ d

    6 k4 K' u6 w: {( B7 m" Z    /**
    . X# T/ x7 u" u8 I5 S$ K! d     * 入队- p+ b; F2 _. n& j9 d
         * @param object 入队元素
    7 r9 r: }& t# W  G     */* T1 e  O* Z5 [" J* `) ?
        void push(Object object);7 `$ H5 X6 K7 p7 w. l4 R5 }
    7 Y8 [, I0 }+ U: \" o+ `
        /**
    ( d) @- M  W0 a- \     * 出队& h' c- B9 E/ V" A
         * @return 出栈元素
    $ D2 \, a; T9 {# z! F2 }, h     */* s4 `8 K( ^* }& E3 D- s. s
        Object pull();3 w; o  _: W& z0 k$ g" j
    $ c# m3 x% H3 x9 E" W" `0 D
        /**
    0 _8 U' k! J" I" n7 o$ ^* Q     *  获取元素个数
    4 H6 o* i  i* m5 i     * @return 元素个数
    # Q2 u  i1 N6 l) j# a. U0 w     */3 {% g6 n2 D# D) E3 m
        int getElementCount();
      l8 Z* ~' J7 B9 C( A) p# q
    ) F4 @' a! G) u- V4 t) _$ S    /**. v/ x- v( b3 k" m# k# [' H7 V
         *  获取队头元素+ w) V2 @3 [0 W6 j
         * @return 队头元素8 C: C4 A* Q* H, i, c& j2 N
         */) W, o4 E! ?3 f4 _: X
        Object getFront();# @+ H. J7 ?+ m3 q8 g& Q6 ~+ N

    : B3 l" u9 B0 V4 I    /**
    6 h+ _% h& I! b% S6 \5 X: ]3 X     *  获取队尾元素' W( G: p' o: t  ^8 V6 M
         * @return 队尾元素& a8 C* V. g* k( ?* {) M9 F
         */0 O/ c$ @4 h  _# j* U: Q; x/ H
        Object getRear();
    1 [, h" ?- C; W/ u
    8 ?4 d/ Y/ |0 g: @6 \    /**
    ' }! A  _. Q2 p' _6 ?. T8 G     * 遍历队列的元素
    ! y) F5 i9 s* o$ w7 V" n     */
    - F2 z+ R& y5 {1 G, @. {: W    void traverse();2 K: o* Y& O1 M
    }
    5 M5 p: @# y4 \$ e$ w1 H2、队列的接口实现
    3 ^9 \- [9 A$ I/**/ J, ^8 e: k1 X% \4 R/ N" c
    * 队列的接口实现
    0 f5 d. T$ U9 o1 q *
    0 }, a7 n/ N6 g& I7 Q& _ * @author zhuhuix) {7 I) J0 ^, Z- i& B
    * @date 2020-05-01
    , I3 i3 [9 X  f$ ^ */
    4 C! [8 b0 ]( h/ B, `7 j$ x! Qpublic class QueueImpl implements Queue {% Z/ @- b) `' _, X$ y- W" K/ ~

    ' q" z/ Y: Q7 o5 N    protected Object[] element;* U8 w! Y) f$ q0 t+ ?' S. I, N

    ' ?( U: ~4 E  u! X. c- [1 E    protected int elementCount;6 j$ [" D3 S0 T: ?+ y5 o
    9 d! G" A" B4 C1 ]' {* _/ a
        //队头
    . I8 d$ E6 P' m- J% A    private int front;$ v) `" c1 u1 I3 m
    6 `% E6 l. d3 t1 l7 q- m
        //队尾0 J) W7 n+ r# e1 F* r# f
        private int rear;. Q. b' S/ O( H# E' ~, q

    6 P" T6 v8 r/ x$ [    private int defaultSize = 16;- E+ g' h5 R, L) Z4 @+ ^$ S' U; K
    + i7 A; {+ O* b
        private int maxSize;+ u( }9 Q% P% h# L8 O" z
    6 x& E: w# `; R# Y
        QueueImpl() {: K, Y6 w( o6 s( C% J7 j
            element = new Object[defaultSize];
    5 X  n5 Q6 P2 q# ?) m' u5 j        maxSize = defaultSize;
    ( N0 {  {  b6 p, N1 y        front = 0;
    4 U3 L+ L" l( U$ h* ]: @        rear = -1;
    : o/ u# k. T" m/ D& S5 x  c4 J& }' u    }/ l2 p$ Z4 s& o4 y
    . _2 Q% i2 @! q# \9 y; v" n$ j
        QueueImpl(int size) {4 @2 E* p  l/ l. t+ [
            element = new Object[size];' T3 ]0 M& i; U8 D* R/ m& N& R
            maxSize = size;( _  b% M5 c( l: p
            front = 0;) S1 O/ }1 A; L
            rear = -1;
    6 |% W% u: A0 Q6 Z6 e/ i    }
    ' l6 E3 F) X% p1 b, {& n* w! a" l) ]) }/ {8 H) [
        @Override
    ' \4 f5 t! ?6 h- p    public int getMaxSize() {
    - V& P9 n+ h( T/ x5 T8 \        return maxSize;
    * \. t8 Q0 h- x- w3 O0 V. X' \    }
    4 f, z9 {4 L' X9 W5 t8 r+ V8 @3 r- e* y0 B% I) N
        @Override
    5 Z3 z7 |* d- z: X    public void push(Object object) {
    0 `( a$ N: o6 Y$ w2 r; u# Y( M        //如果元素个数已经达到数组的最大个数,则进行扩容" a8 _1 T% M. O8 y3 H
            if (elementCount == maxSize) {
      d: N5 b' z" Y  l9 b            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    ' U7 F' N4 d; X7 F* F6 U        }
    " H0 b. o7 ?. H' B2 \        element[++rear] = object;8 s4 t6 z2 o3 H# q
            if (rear == element.length) {
    + B4 f& {/ N# {9 x+ r. A            rear = -1;, |1 b7 o! I3 ^* H5 e) I& g. J) ]
            }. z9 j) M- s% L( Z
            elementCount++;  A( |/ K7 [. W5 n3 I# N) E
        }$ c- d( \2 i+ M1 s; Y( s% ^

    3 ~" v% P& ~- K/ }    @Override; w0 s1 C, I# Y( C+ x6 |# [
        public Object pull() {0 g0 t3 @9 v; F! O% I# Q
            if (elementCount == 0) {# h4 d# l" R% W
                throw new ArrayIndexOutOfBoundsException("队列中无元素");* E2 ~* h' f% e3 G' @* u/ }
            }( ^0 o" \; t1 K$ a
            Object object = element[front];' B3 q2 ]1 Q4 ~
            element[front] = null;  n8 i. @! D6 H0 p" U& I
            front++;4 L$ X  G8 H" ~2 [8 O
            elementCount--;
    ; \- I! P# G6 a6 p, L6 e        //队列清空,队头队尾恢复初始值
    " p+ ?" g" H# r% I% U$ h8 G4 b        if (elementCount == 0) {
    6 z7 K+ U. G$ J! k% Q            front = 0;
    # n: S; {5 }9 q" }3 H            rear = -1;
    4 [" S: f( o7 O% q! _% ?        }
    ! c. Z0 T3 K0 R$ [* q% t3 ~" r        return object;
    $ o7 @4 q0 [' \, o" W& b, S  y! t    }
    # Q! ^) g3 A# Y
    . j$ @' A& U' j3 g% Z- {/ B    @Override
    ' g( D% ^* }8 g4 O# s  K    public int getElementCount() {
    ( _* E7 u& x2 w: T) t        return elementCount;
    # ^* E2 W: y4 N4 a    }
    4 M/ K3 }/ _) U+ k% r
      y+ Y% ?" n' q# e    @Override
    : ?: U( e; I3 y8 `1 G  W    public Object getFront() {
    9 L9 ^) X4 m* u- \        if (elementCount == 0) {! t% z$ t- ]. h/ R% w
                System.out.print("队头无元素");: B3 D1 E9 x% R
                return null;
    0 j- K/ Z3 I% t. _1 H        }) N  V/ T7 `9 f% n9 g( X
            return element[front];
    * @. I) p+ j+ G+ s1 |    }
    9 \3 z1 O& m" X1 A! i7 |
    0 g' N& X# d$ K( B2 {: q9 X6 E# Q! M6 S    @Override) `; T" z" I& Z: K2 D' K" Y
        public Object getRear() {
    / b1 ?5 W' t! f, X6 M' i. M        if (elementCount == 0) {4 g  `; d6 }. l7 M& _6 u/ l$ I
                System.out.print("队尾无元素");
    ; h+ t: F. P4 Y& k+ O% m: S# T            return null;
    4 E* v6 {+ r5 ]; U9 o5 C* @/ S        }7 A; {! z' e# Y7 t
            return element[rear];
    $ q$ q7 F7 b* V: O" t% D    }
    " ~  o4 ?/ R" V+ \5 [! a
    8 D( L# s" ]2 O$ H& a0 p    @Override) I* t1 _0 }* _% ]) p
        public void traverse() {# M7 \1 i% u- w! r+ \* f
            if (elementCount == 0) {& Z* A% N/ g  t% U% e
                return;- r/ f$ I0 W& c1 ~' z
            }( R2 J# F3 n  _# I6 x
            for (int i = front; i <= rear; i++) {
    8 ~( @5 u9 Q' J, i0 a$ ]            System.out.print(element + ",");8 Y; e3 V$ g) [% _. l5 J6 I  K! a
            }3 y  J$ P- Z' [1 y. O* _9 y+ G
            System.out.println();' s- _% t& }; m6 P* u! Y
        }
    " u! }1 o, Y8 P2 R) w+ |}/ e  J& U* i' `9 \9 y$ }

    ! r0 g1 F3 p0 `' R# k# f3 e7 u9 d1 H7 }, Z4 j; x( \
    3、队列的测试. l; p0 e/ E6 y: m, o/ _$ a
    public class QueueTest {; D8 {2 }) q* N
        public static void main(String[] args) {
    # i& |7 [" `6 E, ~8 _# K6 W7 y$ K        Queue queue = new QueueImpl();1 t0 }, Z. |5 s' ?5 ~3 ^) E

    # X4 D$ ^" n( D5 y, h- ^        //获取队列大小
    ) L0 _4 h3 V1 I$ n0 S. F        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    2 n1 G' C( ]) u' y, d9 F# y
    , U+ N5 s7 n- a        //第一次入队列:压入1-150 p1 }$ u; T  J! [0 Z
            for (int i = 0; i < 16; i++) {
    & b: e% j- t+ |6 K& S3 U5 E9 p            queue.push(i);* R* Y; p* n0 f: _# p
            }6 u, ^3 z% m0 V# N# V% q; a
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    ( o! S% v. E9 }' @- F8 j  y4 P& B        queue.traverse();
    5 J2 w6 ^# m/ X/ k        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    4 W* e8 P; g$ W/ N: ~; T' M' o- S+ ^4 y( z; M
            //第一次出队:取出0-15
    5 Q0 T1 w9 s1 |+ |        for (int i = 0; i < 16; i++) {: j$ U- V9 Z; W5 s, R
                queue.pull();
    % c$ l& D0 V3 R" F; e) ?7 c        }/ o( q& r* x. H# G
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());( y6 U+ R* h# X- ?* K
            queue.traverse();
    # A  g" |0 U- _  C2 u% p" L. ^        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    $ N  u: ^, H$ m9 D/ @  M, P- D6 q6 ~6 o& _* ?
    3 a, K! Y/ A$ F/ ~+ b
            //第二次入队列:压入16,31
    1 C2 x8 a) ]' @& u: J        for (int i = 16; i < 32; i++) {
    ' j/ l  F6 N7 b# u6 K% e1 L' A* B            queue.push(i);! i9 _% k- {5 Z) t
            }
    7 |" X4 m9 D8 P5 _/ [/ t) a! V$ J# h9 c        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());+ H* r1 M- [  \, m# ]
            queue.traverse();' o; y1 i/ Q  L* h; M
    . P: z6 C1 M+ s- i

      O: i" _- I" {8 A, z        //第二次出队:取出16-310 S5 W# }6 x4 Q4 @9 }
            for (int i = 0; i < 16; i++) {
    9 I2 }& b" K& @+ x! o' B            queue.pull();
    - z* J8 c# w9 f% u        }
    * c$ Z, |) w. f) \( Y& d( w        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());* W  U( o1 v1 S2 C2 W9 S
            queue.traverse();
    $ s1 C( Y6 ^. R+ ]& g% J7 w4 n: Q$ d+ t8 }4 g2 n, x7 x
            //空队列出队报错) g( Y) u; s) l# S7 W# ?) `9 j
            queue.pull();) S/ i4 Y" q0 y3 g) w& X

    / R$ q+ i2 R( k3 ]    }# X  L5 V6 o0 l7 q4 T" v1 t5 p
    }
    , g9 `, c' O. @& N5 ]) e5 }( ?4 f% N% C: I" w9 c/ M
    6 n) i* {$ E! ]8 V5 N8 P2 e7 W

    % k9 ?. {. J: E. Z( B) J1 L& d, K. A. q/ Z) c
    : z: m! Z) t: v7 |. W+ V& e

    3 M5 Z$ N$ \" z+ U( Z1 b! e. ?7 L0 h* ^( e0 c

    4 {& L5 z6 M/ n) F! U4 o9 J; |1 n, {
    ; r- R  Z& G! U$ F& d& E& H
    / o5 U! ^# m' o
    " `' w, A# r' D$ h3 @/ k2 `' ^  L: E* t$ V# c" Y3 |) ^& s

    $ c4 ]: [( C2 e" M+ r
      o! F4 L+ ?6 d
    7 E! E" o+ A/ \( h+ e$ U5 g' ?————————————————% P) P0 ?/ W* h- K  s( M: z
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。, _. F4 f4 I- G5 K6 s
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    ; y8 w* F" j  l2 Y! Y" S* t: l& S7 @* B# _
    4 h+ _$ c1 S" @# o5 H7 a. o
    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 13:27 , Processed in 0.321727 second(s), 53 queries .

    回顶部