QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1705|回复: 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  o1 {9 O' a( @$ ?+ ~3 N
    数据结构——栈(Stack)与队列(Queue)的手写实例) s* \+ \+ F! G8 K4 u2 W
    $ J8 E3 g4 _5 r, d! a( l- `  R+ p+ E, `
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      ' N7 ^2 x$ R2 C* X
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        0 v: G3 j8 L2 [$ s
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试3 V/ m- F4 M& [2 o. u) c
      • 三、 用数组实现队列) S/ ^( R5 T0 u' N  T
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试* [8 U; S( r& y, g$ o: P

    6 O6 D4 o* e/ t5 V! _1 O, c
    7 ?0 {! l7 k1 C/ I  {& W一、 栈与队列的定义: C( h$ ]9 `! W
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    / V8 F5 ~' J1 I6 Q" } 1.png & A" p3 V  ]# v$ E: ~
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    " \$ @+ W; F, K' f5 Y; ] 2.png
    2 \, @" X  G4 Z" y* I0 _: s
    5 N1 j4 y; N6 p# ~3 B: [6 Y' D9 }. h3 r
    二、 用数组实现栈1、栈的接口定义
    6 b. ~* }4 G) V% F" W/**" L4 N6 k/ e0 w
    * 定义栈的接口
    2 _; \  L- @/ Q3 f *7 |% u2 G. }( G/ p
    * @Author zhuhuix, k6 c/ s! l1 H( X! U
    * @date 2020-05-01, ^8 {( j% \+ L( I$ a
    */) O  K; R6 R7 b( R' h
    public interface Stack {
      U5 G) X6 a) }! [9 n9 v8 c    /**  ^) ^  ]. s7 n& G" t3 P; }' q
         * 入栈
    , \# X& s6 ?9 {* H     * @param object 入栈元素8 J; @7 h, }2 N/ m  a: s" |3 C
         */
    ) j  j# M) e! r7 g" w' f/ r    void push(Object object);3 f1 l1 P% s9 t" c2 r& {3 ^
    ) n' o$ e: t7 W% e  V- d
        /**3 w) y; k4 e% F9 ]6 D# Y6 E/ e
         * 出栈
    ; B0 @; F! G7 Q- y( X: @% Q     * @return 出栈元素  Y: F2 Z  b- X1 l: V
         */" F: ^. T  ]* d# h( n! m3 m
        Object pop();6 C& ^; z" H6 @/ P

    , Q, n0 N! q/ G% A# B$ U    /**
    6 {3 C+ U( s3 s4 [: F9 e) g4 G     *  获取元素个数
    6 K9 x' x# M  c0 C2 v     * @return 元素个数
    0 G$ J" \, Z. A' R' a- Y     */
    0 n! s+ k7 i4 E' O( X, ~7 q    int getElementCount();+ X% A4 {9 |0 x
    $ A& f% H. h$ y3 o
        /**, D& ^5 ?" Y) }  w2 M' l1 t
         * 遍历栈的元素' n# a( S3 s  A, l0 ?% K  S
         */( e8 ^4 O/ H6 Q. M0 v! ~
        void traverse();
    4 a) Q. m; v6 h8 ~& i9 Y1 |- M! w' J
    }
    7 p) [' M- O3 l( O3 |- }7 `2 m2、栈的接口实现# N7 z0 X9 R- r/ y1 I- n
    /**
    . r% h+ E3 r* W2 u$ ]( t' c4 r  t * 栈的接口实现: P# W  U* }# e& i
    *3 J2 X9 |8 I0 R  _+ i7 A# x) \! h
    * @author zhuhuix
    ' @/ _7 K& ^/ T( H# U, y2 l; F5 G  U * @date 2020-05-01
    % i- {* h+ D3 n5 \) P7 @ */+ [, A/ F- X9 W5 K% N6 s4 K' Y
    public class StackImpl implements Stack {
    , `( \, U1 L, }" B2 K9 P, _        8 O2 R1 E' s& B" P/ X  a7 Z
        protected Object[] element;
    , g5 N9 x3 R5 k* i; Z  ^" @; ]: x# P5 M) q
        protected int elementCount;
    3 G) w/ f3 x$ g
    - n" q$ @3 c7 ^# |! t    private int defaultSize = 16;
    ' n$ ~% O/ n" ]  y1 Z6 v) [+ q
    # y& J% t$ P0 Y6 O6 I    private int maxSize;
    ! P8 e$ _5 D3 K; V! J6 U
    3 i2 I9 |# [* u    StackImpl() {6 Y, S- U; r. l
            element = new Object[defaultSize];
    ! ]8 C/ G# w) e! I6 B. S$ z9 S        maxSize = defaultSize;; D. ]# I7 Z7 Q" l
        }- `  t/ ^  a. n

    ! A9 w: f2 `% q! z0 ^+ D: x3 Y    StackImpl(int size) {, T2 O3 g. N2 z- }5 K6 b7 S0 X
            element = new Object[size];
    " @- z7 x& j2 _/ k& u/ |        maxSize = size;
    1 `7 Q( A) j, l; @- {+ H3 |( ^    }+ F, F3 R; z% i- O: p; j

    5 ]2 G1 [& ~0 x  D) `    @Override
    : D- |: m, x  o9 H$ K$ J, L" j9 M2 N    public void push(Object object) {
    2 u% x5 S. ^/ S        //如果元素个数已经达到数组的最大个数,则进行扩容
    % J6 u  S3 y; `% ]& W& P        if (elementCount == maxSize) {
    - l* L% P9 R3 n' }, Z            element = Arrays.copyOf(element, elementCount + defaultSize);
    9 E7 }5 U5 B% F  w' x" i% Q        }+ ~( \: G0 O; _4 H! y( @! v8 c
            element[elementCount++] = object;; d+ V: T5 y: D) a0 B6 `
    1 g4 P7 o! ]& E( o
        }7 C; |, Z' Q& W, D0 |9 l5 o
            // 本代码未实现数组的自动缩小,具体方法可参考JDK1 ^( ?' Z. y! ^
        @Override( G7 S- ?, p+ Y! u8 x7 e
        public Object pop() {7 p; W" g. g/ ]2 e
            if (elementCount == 0) {
    5 a1 [/ M4 q) a- K* R: l- i; t            throw new ArrayIndexOutOfBoundsException("栈中无元素");: u* a5 j: P3 _! o1 Z
            }$ P/ t$ K3 Y" t# f0 [1 e; E
            Object object = element[--elementCount];
    - D, y3 j$ t& |8 e9 Q        element[elementCount] = null;
    / t5 k2 d' O4 d1 X) {, m% a$ F3 j9 `# i        return object;& a8 m* g4 z/ X6 C; b/ k1 y- ^
        }7 J- a, e' l9 k8 s9 L0 m& P

    5 Z  g! L( Q" ~6 B( Z/ w+ }    @Override( A; s. c3 T. t  {0 t& d# f
        public int getElementCount() {6 R3 h4 s" [6 _! Q1 }
            return elementCount;
    ! V# s' p6 m- G( M7 V, e8 ?* w3 f    }) |2 `2 _' W( G: i0 M

    & ]! H4 V& e! U3 s4 B2 X8 ?  O1 @. k: W    @Override) F7 T/ {, d: a2 s) U( S7 }
        public void traverse() {% [( }, H! ]: v) P
            for (int i = 0; i < elementCount; i++) {
    5 \/ C/ |  B; ^& S# Z" j0 d            System.out.print(element + ",");1 [7 a" S$ {1 i
            }2 t3 m, M! P; z- i9 b% G  y
            System.out.println();$ c" }0 J3 T& x$ G* w& d( v. x
        }
    : S; z: X0 r+ G' X}0 Q. l9 K4 M4 p. C- T) \* B! M
    3、栈的测试( M: V9 q+ Q$ k! v$ X1 K
    public class StackTest {
    ; h" z8 N0 ?# j7 P3 d8 K    public static void main(String[] args) {* I$ _- L% n7 d- Z
            Stack stack = new StackImpl();
    ; H# B# c( X( {0 F6 `' f" L0 I" e/ j
    2 l, Z, F. Z2 s/ D        //第一次入栈:压入1-15
    : O5 J7 T9 _! {        for (int i = 0; i < 16; i++) {
    , o+ n4 s( b; s5 t            stack.push(i);
    9 j& U* f+ s1 L- X        }# Q. k" z1 ^8 N  K
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    & N0 J/ w! m; B5 z) M        stack.traverse();3 g1 e/ A( K+ b; ?, e
    9 i4 W! B! K' j, Y
            //第二次入栈:压入16-311 Q$ x; g3 B* |5 ?+ B0 `/ L4 H
            for (int i = 16; i < 32; i++) {
    * B% ]. C: t) ~* T            stack.push(i);
    ! d$ L& x2 j1 ^% p6 m& w1 j        }
    4 c# v  _# t( s2 e* [        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());; w0 E4 b' N% D) A% c- a4 R3 x) a/ L; C
            stack.traverse();
    6 t3 G5 B# E) C% ?% C  Z. Y+ @; X" ]( D: b( h
            //第一次出栈:取出31-16
      F; v& \' C2 K% s' J! h0 s        for (int i = 0; i < 16; i++) {  I. X. b( B* J- f. _5 t8 }) ]. T
                stack.pop();. N; w$ f, i) i, T1 [
            }$ |* b. b" B- Q- W4 V6 c
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());8 a/ O, ?* I, C+ F
            stack.traverse();0 `# M; V" w( g6 r" O
    , ?8 u: \5 a. }9 w
            //第二次出栈:取出15-0
    1 }3 K. t) j8 \6 [% U. d  r) U9 Z        for (int i = 0; i < 16; i++) {
    1 a( \' H! `- C6 ^, [8 @- l0 U$ X, D            stack.pop();0 m' ^+ w" L; H3 b
            }
    / M* x7 f! t$ m& e        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());! J9 n9 m( v+ A# i
            stack.traverse();' E! u  z  w1 ^4 u" ]1 h

    , F+ ?( v3 R- A2 o; F8 Z        //栈中无元素,出栈报错
    , c. p( b! v) Z2 C4 r        stack.pop();  l. U' t( p, P
    - t0 }0 v! |4 F0 F5 s9 H
        }* ~( M# F" I) c+ F
    }
    1 }) S* i' \8 F! z5 G 3.png
    % X. X, S  P8 U& o- A8 I( c3 x1 c/ f2 w/ U6 [3 |1 i

    5 ~7 Y6 u) {) |( y  C
    # B, Z! S- E, T: ^! h- s三、 用数组实现队列1、队列的接口定义# m8 W) i1 D. H; y6 n% u1 s% y' p
    /**
    6 ]- q/ L1 K4 `+ e) w6 k * 定义队列的接口# l- t% M: T* y0 k5 a: h. A
    *
    3 B& X. X7 }/ D8 _7 \9 u+ } * @author zhuhuix
    $ S8 t6 O1 g' J& B. a1 j; j4 ^ * @date 2020-05-01
    7 y+ o1 m6 R  K' ~* N */
      a$ A4 |/ y# a! `9 ?6 X( Kpublic interface Queue {, g) C9 D0 P% z+ F3 j
    ; y/ {9 y3 E" y+ V8 @
        /**" [3 t8 t, c6 p3 W
         * 获取队列大小
    3 ?2 g0 j3 s  C; b; x! t4 K! p     * @return 队列大小
    0 V& `( {4 R( m$ p2 m. s, [# Q2 h8 p     */% f3 F# K0 w9 S$ a$ Q, X: |' s
        int getMaxSize();
    ( e5 H& m' x( k& q/ K( C( v! n- G8 ~. o6 m* \# c
        /**% C, A0 X- J5 z7 i  Y
         * 入队
    - V: w$ |  T' M) ^$ m$ I' A# s     * @param object 入队元素
    ( {; `/ h, l1 V. v" X- B- [     */
    $ ]5 O! A) D4 e. p: ~" C/ h$ v    void push(Object object);. S" y' e' _9 R& [, T, E

    ; G6 d4 N3 V; I' w# P    /**+ S4 b& ]( ?3 A& O& W* T& y. z7 u
         * 出队  u% p1 k9 m8 s: o* g
         * @return 出栈元素
    + G% U% H  E" `  l) p     */6 q, P$ b, Q9 N5 I
        Object pull();! L; Q8 W3 K  |9 c  _4 j2 X, T

    7 s  F  N$ f8 B9 v& R8 a6 V    /**. }3 J( y% ?, h/ e) |* k, X
         *  获取元素个数
    ) k0 j1 T) t+ I/ V& ?* f     * @return 元素个数9 b* N% C$ i1 D, \9 b9 z
         */. }% a8 d( Q/ F, ]( L5 P
        int getElementCount();
    9 P! E4 q, b" v1 c, X
    0 P6 F. ]' w, T    /**
    / o! G* G2 @$ |7 X" [/ c; W# I     *  获取队头元素
    + o5 A0 P% F* z- ~- t( ^3 x1 {     * @return 队头元素9 U7 Y7 h+ K- T
         */
    ( J: D& P6 A1 }. u5 C4 b4 n    Object getFront();
    " l4 ^8 ]% f' I; ?" H  W  _3 V% S9 f( \) Z3 A
        /**7 B- F0 Y% a2 d9 L& j' k! ]
         *  获取队尾元素
    ( G- c6 N. W1 X, x% W     * @return 队尾元素! U- p4 t0 w, @
         */6 g  b" D3 Q* e! K- S' H3 h% e
        Object getRear();% n* {$ {3 d0 ~' y

    2 g$ q2 C" i" q3 y+ d    /**
    " P% o4 Y; I+ I+ l" l     * 遍历队列的元素
    1 c- V6 ]9 m( o+ g; O3 ^6 H     */7 M3 T: E$ p" ^  X4 s$ ]8 @3 k) Z
        void traverse();
    0 r5 U$ n& {3 A: u: ]}; P- @$ B: l+ J8 D
    2、队列的接口实现
    7 `6 B- U  U1 e0 ?4 c/**% W2 s  I7 [" K6 [+ _  r0 i) w
    * 队列的接口实现% q' I( s, r/ @3 v8 d
    *
    9 U6 z8 B3 j& }7 x% i! q * @author zhuhuix
    6 r& |, _* z$ _. ?$ x9 W * @date 2020-05-01( T+ `# u& p6 `* d" E
    */. n2 N; Y) }/ R$ J* b: X* {
    public class QueueImpl implements Queue {
    " g* @6 k* o% K  M' H2 C- @, c5 @5 M, c. R- V- Z7 }
        protected Object[] element;
    ) j( B2 c0 Z( n5 |( A- r  @/ F" V+ |2 \% f, s8 m! O; @
        protected int elementCount;
    ; ~6 {6 N# A. T' p. o
    ! Q/ _/ C) H4 |' q% J5 p    //队头, h, l' Q( m% W! S( E2 D4 H: X; P
        private int front;% V  f3 Y/ e; f
    $ w7 I* c8 ^. W; ~( U$ l1 I
        //队尾% S( B; ]1 }& Y- D
        private int rear;
    , j2 t" k$ `& @$ P9 V* K* [2 ?; n, t( A4 Z# X+ S) X4 {& Z  _- L
        private int defaultSize = 16;1 U5 i  F2 h2 u& K

    6 ?* B7 z7 s& ]% Q, D! B    private int maxSize;% T% P  u4 C$ j5 M: M* d% T% {" @

    . Q4 J1 v0 U: z3 |$ O    QueueImpl() {) B' M( y4 _% ~* \  P
            element = new Object[defaultSize];
    3 A1 V! ?; a9 f        maxSize = defaultSize;% m/ W( V( E# t% P1 U1 n
            front = 0;
    ) E$ y9 v% d$ P0 s# j% p2 h/ o        rear = -1;
    " S  U  g; U0 ?4 W2 f    }7 O2 X8 j, S$ h& a
    2 C% x* [. @2 Q: W9 K" n$ w- c( f* _
        QueueImpl(int size) {+ I4 e. a- B% i5 C0 I
            element = new Object[size];
    % h* a5 Z5 K# m        maxSize = size;
    1 ]9 ?3 P- P' J6 k        front = 0;  g: j, z5 x0 ?7 A
            rear = -1;7 V3 A. i' F" c
        }
    1 L6 u# N5 a' t
    2 B3 l/ _9 l1 b    @Override
    / I$ V+ g* A! J    public int getMaxSize() {
    - @3 H) U" \; f        return maxSize;
    1 i# \0 a8 B# b7 ?! O: _    }
    / g& P  @: q4 O. U- C! U3 @2 i( w) z' [
        @Override0 @; k! Z9 e# X! b- \
        public void push(Object object) {
    " r$ b3 \; a  a( N' O        //如果元素个数已经达到数组的最大个数,则进行扩容
    . s& @9 X5 R& m& t& z  A$ k# O        if (elementCount == maxSize) {
    & W, D. G6 k. \  n, g0 A            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");! c( O8 W; E" j6 s2 B5 Z
            }
    " J: O/ [# E* H) D        element[++rear] = object;
    7 q. y3 Y4 {) @5 `. b7 ^* z        if (rear == element.length) {% p, V) I  Z4 c. i& L/ b3 y* Z' M
                rear = -1;6 _( S1 u- n  T$ G% v
            }
    1 K4 D0 r7 _  J1 |        elementCount++;
    2 Z$ `3 P, G7 R1 o3 f% n0 e9 P( H: T1 s    }9 o, i- ?/ k" y/ o

    4 `/ l1 j5 L: U, Y+ J! h    @Override
    5 M* ?3 O( Y0 U0 M    public Object pull() {- a) t) D7 k+ i: P  U$ m$ ?
            if (elementCount == 0) {% j6 N: R9 ~( u3 @" b
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    ! y) G  }0 b- B$ e1 ^6 ^4 g        }
    " B1 a( p) o/ z% }7 m! Z        Object object = element[front];8 i- \4 b- ^. p. W
            element[front] = null;4 R$ ]: ~: l$ l: j* G  V  V1 O
            front++;
    / r' J0 k6 z" |4 {( A, P        elementCount--;* L" S# u4 Q0 O8 Y0 x
            //队列清空,队头队尾恢复初始值% `' V0 D8 R& x, H$ _, @
            if (elementCount == 0) {
    , f7 S# |- v  D' }# H5 p            front = 0;
    ' b% T& E$ h, {# ^( G4 F            rear = -1;" V; S9 j; e. P
            }- x5 r* w7 h( I
            return object;
    ! E7 B4 y4 j. O    }. m5 X! l7 G3 {! s( ^3 ~* Q

    # r3 j( g7 \( t" F& L- J    @Override
    ' j0 G7 z. ]3 m& ^) o    public int getElementCount() {
    " i! @7 y. x. a; u5 Q7 v  M        return elementCount;% ^( z! _, J5 C; F3 e# {2 m6 s1 y
        }
    - V) [! S8 Y9 P3 S( u' }
    , p3 e4 S3 P1 E  K+ J$ O3 A    @Override
    ; E  ]! N( k3 F/ V2 [0 E: D    public Object getFront() {! y" I- S' T% g; L
            if (elementCount == 0) {+ K5 X* s) [) i, s3 x
                System.out.print("队头无元素");" V5 l. Q6 T" A' l) X. @
                return null;
    ! C; D3 ^) }  c' p  L& R/ ^        }& C6 o# C1 |3 W
            return element[front];
    0 f5 I0 z3 V' Q. ?. o    }
    0 F' D& m+ c$ @3 m+ F9 T% i! ]9 X3 t7 R( M
        @Override4 z; R+ e, E  X  \; w# l/ k
        public Object getRear() {  |$ M7 W9 D0 l' [/ ]  e5 {
            if (elementCount == 0) {8 i$ R; p) o# u
                System.out.print("队尾无元素");+ Q4 }) C+ `$ P- L
                return null;& U9 x0 g/ f1 W3 v( g% m2 {6 h; b
            }
    # L: P8 h* {) ^( U9 H; I        return element[rear];9 V1 P* {* b# s. e6 {
        }
    . ~9 Q0 f% O3 Y, X+ o8 `+ i
    # Y! i, K; l* J% n$ p9 W    @Override
    & v* j# T* Z8 Y; x    public void traverse() {8 w4 n% r6 o" V! h
            if (elementCount == 0) {
    1 S* A0 @# A1 E            return;
    $ c& B. a' c8 Z. \3 v        }- O+ B* Z* U% R+ O4 O4 H$ o) s+ N
            for (int i = front; i <= rear; i++) {( t$ h# ~) D6 x6 R; a. M, m
                System.out.print(element + ",");
    : x0 z3 R7 v8 X+ i        }- [* h2 f$ p% @
            System.out.println();) v0 x2 ~, D( g1 \4 S& G; F
        }9 ?+ \* b( r, F( W% _+ @/ G
    }
    , n& v! r3 U+ T8 B. |6 }! S7 ?1 Y! O3 E; t/ V" q. r9 |2 o& {
    ' L& I! S  V2 L5 H
    3、队列的测试
    # B  e' `9 z; o  @/ B3 q, U7 Hpublic class QueueTest {$ H5 b! w2 l' P/ G( ]
        public static void main(String[] args) {
    ; y9 W+ W# g- @        Queue queue = new QueueImpl();# p% Z- i! _2 ?0 }

    ( q' c2 l+ ]: ^/ G. [  }3 i7 y+ V        //获取队列大小9 t- l: D1 Z1 [: |7 {
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    - i# A& f! `6 c/ K) R% M+ D- f8 P4 ~: b2 h
            //第一次入队列:压入1-15$ G5 f8 b9 V) Z
            for (int i = 0; i < 16; i++) {5 |# w% l4 A: V  M
                queue.push(i);4 v1 ?5 Q! {( g! C
            }
    ; P% }2 p# o5 J' C4 c/ A        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    # p" z' Q0 d7 e4 c! z) D        queue.traverse();* f+ |5 L: S0 J( C5 O1 }
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    - a2 ^) V  {9 t' Z6 y4 J. Z' e( A) A
    7 m% C; e$ B+ {! X; O; n$ C        //第一次出队:取出0-153 u1 \! t9 X( @, ^: t# F' Y# l
            for (int i = 0; i < 16; i++) {  h3 A0 X/ ~! m! U- Z: K
                queue.pull();6 h, d  u) z" i5 R8 ~
            }- @1 ?/ \6 C6 d- N+ O
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());1 K# `  R6 f. _
            queue.traverse();
    7 j  H: C  G1 y. F2 w        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    # G9 B: e# D1 _1 {
    * H8 ~' X: g7 \( |( `4 G) r0 N
    3 |  S) d5 A4 p( m* I        //第二次入队列:压入16,31
    : v4 L& H! {$ F0 W. j        for (int i = 16; i < 32; i++) {7 F- K8 @6 o/ x& C0 Q4 ?
                queue.push(i);
    8 _" {9 r8 M1 _" B3 |7 f7 g        }
    4 W2 @& n- h2 c! s6 l* e3 p+ d. B/ N        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());8 c% {% ^3 }4 H( h, D
            queue.traverse();
    . e! I* b% |$ v* K0 e. V
    5 [0 A5 k# ~% T* h; F7 D" }% l0 x
    4 n& r6 [+ K1 d  @& m        //第二次出队:取出16-319 l  Z' V6 m9 f+ L
            for (int i = 0; i < 16; i++) {( p4 q8 u+ Z. t; G  t! e
                queue.pull();, k  [) f1 n; U3 V$ l! H# }
            }' v1 Q+ E: W1 W8 F1 G
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    ( }; p; ^3 q  @        queue.traverse();
    7 S9 U3 _4 B  [6 z8 l. J" l- ?* ^+ z' ]
            //空队列出队报错. O7 a( h" O4 y( M8 S; A
            queue.pull();. _* c) u# }# B+ A
    ! O, y! |' m3 T0 e6 _
        }" ]3 y8 B7 {; \9 s$ g* R9 t
    }" M1 Z/ h. ]9 q/ E
    3 n( f+ p7 O& O# H' M: @# j2 k

    / Z5 B' p0 D* Q5 |
    ) H$ p5 H$ l* m& {  U; P0 _" K8 @  X. P1 V( V
    " {  ]( ~% z& u+ X8 t

    3 i& B6 ?7 y% {" a$ x
    # {6 _7 u9 k5 a9 C8 z+ ~0 n# V, U* J6 ~6 h# x$ i
    2 ^3 L: [; B5 |5 s% E5 u5 j
    5 y0 `# }. Z& N% i4 y" v3 n

    # k3 y2 a  D9 Y9 x
    # }8 d- F7 z+ @$ v- {* Q- [0 L9 T4 d% l7 [$ J. D

    3 h. p2 U1 c5 `* K( [7 e+ U7 f! O6 I- x) m3 J  ?2 Z  f' ~
    ————————————————
    , P6 X9 }' m" X% U版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 p* b* x: m, ^4 m/ j3 E
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785! L4 l- R. _* h2 x

    ; P  C1 o9 A' b. c5 v3 k
      b) a" v; ]  k" X" W7 I
    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-6-9 20:23 , Processed in 0.343766 second(s), 54 queries .

    回顶部