QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1707|回复: 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
    $ l4 q/ b* s8 o; A( `* P$ i
    数据结构——栈(Stack)与队列(Queue)的手写实例
    0 Y$ m0 T1 x6 N7 [8 n% R/ O* w, N) a! O
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      & |0 x. S) k2 k
      • 一、 栈与队列的定义
      • 二、 用数组实现栈2 v6 [. {; g4 z  q' a# U
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          ( C8 k: ~2 N, i0 m$ r1 k- w
      • 三、 用数组实现队列7 q; \' H) `, {
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          / J- A& x1 S/ n" s1 K( {

    7 P/ j- O% r! W8 M, g8 A
    4 x' b- E8 z0 e4 d一、 栈与队列的定义$ W- u! G( `4 E2 {& m6 k( w
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。0 U% G  u! W$ z. M$ H! p
    1.png
    ( A6 a# r' a) X# @" n3 B4 C* y 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    2 W3 [& ~) ~2 p  d4 X) n 2.png 3 c: U7 w" G+ b
    2 o7 F* w6 `+ o4 o' a

    + e, Z/ O7 q' r. o4 G7 U" @5 r二、 用数组实现栈1、栈的接口定义
    3 i% h+ b3 y( h5 j/**
    , V* H3 M* Q7 u * 定义栈的接口
    $ O" b' p1 @; M% N  T *
    * o9 u* m# h" Q4 W: V8 ~# W * @Author zhuhuix
    . x  H& A' V+ I * @date 2020-05-01
    / R, [4 s7 _/ T: K" N  G: F */
    6 J7 g/ z+ S9 L0 D3 gpublic interface Stack {8 A* ]+ N6 W+ r" o$ J
        /**
    : X0 X) V/ G& l* X     * 入栈' N- ~) e9 t6 J/ d2 N! h
         * @param object 入栈元素8 G- y$ _3 J3 Y* B8 d
         */
    ; T+ N% H% b* N  T    void push(Object object);
    ! n5 N, ]& d( J- B5 c1 C
    5 \8 T' G0 K/ L. F" b$ K    /**
    # b) h; r( \+ H$ \     * 出栈& m1 L; t( w3 T8 }' H: B% m! x# v$ b
         * @return 出栈元素" U* y- g# J/ r- |+ `3 u5 [
         */
    1 }  Q# v9 n! s: Z& `    Object pop();
    6 t1 Z% U0 g7 \/ {: E8 J1 m; g" t: E$ m) p
        /**( R0 I5 `$ c9 A( A; u9 b& h
         *  获取元素个数
    9 L$ u1 E# J  ^) K     * @return 元素个数& _* @$ g3 z2 y5 g0 T
         */  _0 e- F+ x0 G1 S) K' x
        int getElementCount();: E; ~+ E$ N' J6 p6 O

    1 P( _! h+ |: y; k$ p' q    /**
    ; b, Z9 {8 v6 d  \2 Q     * 遍历栈的元素) Z4 e9 |, [2 E4 }$ W
         */7 X4 L: Q; C0 V+ J3 @* ?( f2 C  ~
        void traverse();
    # q9 E+ U( Q& @' b! g  F7 H
    , O, z' @6 v( J8 g' C3 `}
    ; j5 J1 g  I7 X9 [! B2、栈的接口实现
    7 g) W" N: J0 h* h+ n/**
    # T9 r: P( |: ]& [ * 栈的接口实现
    4 y$ g! }; E4 ~4 h *" B8 {+ g2 a) f0 ^: I7 v" O
    * @author zhuhuix( @5 P* d. r& z
    * @date 2020-05-01
    % d- f) v& D' k- i */0 _% b( J. V, R6 l* A% k
    public class StackImpl implements Stack {
      i/ i' M3 B' M        " q1 t5 c% A8 {2 v1 L
        protected Object[] element;
    & r* L) S" T" _! _4 ~+ T2 i8 V4 M3 H# l
        protected int elementCount;9 Q: y! c" ~5 d* t, h& O/ y

    $ ^6 O# I6 D: [0 W1 d    private int defaultSize = 16;
    ' b7 P2 @; h4 \) q4 f% b) ?7 I. v$ G& ?6 j
        private int maxSize;
    ) N7 {/ l/ L: V- q- G- M2 c+ q' ?3 \. s& n+ T; ]
        StackImpl() {
    2 S5 w0 ~4 {5 M  U1 J, p        element = new Object[defaultSize];
    ! P8 R" p# l6 g3 g        maxSize = defaultSize;
    ' ]' n6 ?0 e6 A6 ^* t3 x5 N# j+ l; w    }
    8 e; V" ]0 A) `9 }5 Q
    7 U- \) s& Z1 ]; j2 G    StackImpl(int size) {
    ( A: i2 N( {- b, e) }        element = new Object[size];/ g6 `0 I* `* c. t
            maxSize = size;( n, s) a  a! r/ y2 V4 k
        }# y( A0 v" @+ q. y+ e/ b

    2 Z3 |: V0 S8 C# \, H. [# w    @Override" {( r  v  X4 U2 g4 E3 V
        public void push(Object object) {7 X( D9 Q; [1 r
            //如果元素个数已经达到数组的最大个数,则进行扩容( m# @6 K# A# V" Q* \+ W# `4 c
            if (elementCount == maxSize) {0 M, `, F1 h5 G2 G
                element = Arrays.copyOf(element, elementCount + defaultSize);
    $ u) {, r. j( J3 O        }
    # W; ^5 l$ C8 g  t7 m" |2 }8 e        element[elementCount++] = object;* q1 `* i/ ]- ?; J. m$ a

    ' l2 F( {- d4 }* ^$ N4 I    }" \) W& S9 M  d4 c. g6 C
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    - |6 E8 ?+ q6 Q4 R" w) m8 {8 b- n    @Override9 |' q# G: d- V" n9 x4 N, Q; X" s
        public Object pop() {
    - h9 P: I2 O( a        if (elementCount == 0) {
    7 H6 b; c. @4 T8 E            throw new ArrayIndexOutOfBoundsException("栈中无元素");6 B& Q0 @1 O' ^1 g6 ~
            }( J5 i$ ?. h& W5 T# F( t
            Object object = element[--elementCount];
    ; q( [3 j" J4 \        element[elementCount] = null;
    0 K4 [/ @! y; z5 g9 r& V; M        return object;
    - o# {6 X7 u/ [& E% K  Q8 o8 Y. q    }$ E: U; M. j% M2 O/ e

    ; g$ N2 {5 h' u1 `0 B  p7 j    @Override
    4 f# x. z; x2 Q9 J& `- X( B    public int getElementCount() {
    " R* t* P; G9 h/ _* F6 c( z+ V# f        return elementCount;
    $ e; ?* d# e7 d) R$ U9 q    }
    ! I; ?% _$ _9 V2 A: E* o! G9 e  D( e! t) u7 H, i! p# j3 n
        @Override
    * ^& J+ Q, M0 n4 x    public void traverse() {
    $ D8 g: B: y  X" i, ^        for (int i = 0; i < elementCount; i++) {
    # J! W# f# Y8 j$ F8 _  w4 X            System.out.print(element + ",");) B9 Q/ x* ]2 Q/ @
            }
    6 z1 K4 A/ ^* o5 R$ d        System.out.println();
    0 H  U% c  S2 f  R    }
    6 L  j% N3 U1 T}8 k# P1 b5 T* p9 K" n
    3、栈的测试
    & X9 l1 w' Q7 S( D7 m2 P8 G0 Hpublic class StackTest {
    6 d! N& y' v& K1 F. M    public static void main(String[] args) {
    8 }% V2 E) }' i# W        Stack stack = new StackImpl();
    9 W0 z$ _* D/ j4 C2 }, o, `
    8 F! W* [! k' R        //第一次入栈:压入1-15
    ' o8 t3 @, t8 U$ w2 M2 J        for (int i = 0; i < 16; i++) {+ E0 V& T) S5 @
                stack.push(i);
    3 l+ ]+ Y0 W" ?        }" `" o& l9 o8 b
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());: \; @' [/ f+ A3 Z
            stack.traverse();
    ! }6 P+ d) `" i" H/ c( k- X) }: x4 h2 X: b; l
            //第二次入栈:压入16-31" s6 G0 n: n) R8 m3 z  Q
            for (int i = 16; i < 32; i++) {
    % C2 R5 f1 ~1 G( v: }' Z5 G            stack.push(i);
    + o2 P2 k1 h1 _* v1 i7 ~  L9 f" z        }
    ) T! h* y9 q8 _. T        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    % P: R3 C5 L+ H  o) ?        stack.traverse();
    2 k7 `, z$ W) y: u6 x2 _3 A$ O7 a7 u2 f6 W/ C" q5 S0 W
            //第一次出栈:取出31-16
    ! W. c, V0 E5 m. ^7 ]3 R  d        for (int i = 0; i < 16; i++) {5 ?* \* M* h8 ?8 j6 w2 p$ ^
                stack.pop();1 @& {- ^+ G; B" \6 W7 s
            }8 D# h8 |4 _. n1 o; i. ?
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    8 g2 f/ O* b1 A( F0 r* M        stack.traverse();
    * ?# r" s5 x& Q! n9 W. k" s! h9 }% }
            //第二次出栈:取出15-0
      Z' w( m- D$ l+ P1 Y8 c+ H# h        for (int i = 0; i < 16; i++) {* M$ c9 z& G4 K  i1 e- S3 g
                stack.pop();% D% @' Y. h) A# P
            }9 {/ ~$ t- k" k" b7 P. o
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());6 A# a# x7 Z+ F! E  ]# ~& o/ r
            stack.traverse();4 w. ]: u. g% ]( f$ I/ _
    $ ^9 H% R) O4 F5 ^6 j
            //栈中无元素,出栈报错
    ; K  ?: r+ P; T) Y& v) c        stack.pop();. f) o$ C3 n8 K8 @* b

    : J. n% N( q* C" n8 N0 e    }0 L# @4 }, v" T7 C5 }# F' t
    }
    # [4 v' G' L5 @) E 3.png ; {, q! P* c0 l
    . D. Q, i( O. b2 u0 q4 r

    $ [% |5 _/ A  D# ^) e& r% H6 A& ^& `* F
    三、 用数组实现队列1、队列的接口定义
    ( u5 z& ?1 E- P7 b* u/**/ c6 S3 n) S+ `; T- \
    * 定义队列的接口
    7 x7 l$ T, H% `. [9 a# f *
    * F  x- [& |% G: _, f * @author zhuhuix1 x8 p) _: h0 o2 h& x; S8 t
    * @date 2020-05-01
    - Y/ a/ z( A( ^; E- A) U4 v$ } */  [- O' |  g! Y9 _
    public interface Queue {* I7 ^! D8 _. Z, Z3 D9 @) r! Q

    ) L3 v( _9 p5 p% l    /**! d' N* j* O( |) o% B  ^
         * 获取队列大小0 j6 ]+ j8 ^) l% W. C) _
         * @return 队列大小
    + |0 S3 A  {& _6 ~5 N& |! a     */
    9 j) _* a& ?  I; H, }    int getMaxSize();9 p9 d! C" [  C$ i  ^! ~" Q
    8 u2 O, L& b. M; i
        /**7 x8 m) i2 h+ T6 \
         * 入队
    + J0 X& @& r% v( A# {     * @param object 入队元素( b4 @; V! U- K) V) L
         */" m. b0 C8 t) |
        void push(Object object);6 a& g. |4 y9 h. I% _7 k
    ) w1 A; D  g9 k& s
        /**- {8 a9 A* H+ `- h5 z  @  c
         * 出队- `; h/ D& {" G' g& S1 ^: M
         * @return 出栈元素
    % i3 `$ Z' Z: W3 C/ z     */0 @( m( t2 u  W" `4 P
        Object pull();- Q, Z5 s6 F% c2 C
    9 h# Q/ T' L- |+ ]# O4 r/ s
        /**5 I' ~' @$ x6 `9 k! k
         *  获取元素个数' j) w7 A# \3 a( Q/ y
         * @return 元素个数) ]3 G8 T1 G% x4 I
         */
    # I. q4 [0 Q2 |, G* a2 F# f    int getElementCount();6 Z+ Z$ k( T  w2 b. u1 d

    # h& M7 I+ E. Q! Z    /**7 x& X+ J. T5 w0 D; j. b. g
         *  获取队头元素
    , M- v2 k$ z4 B& ~9 ~     * @return 队头元素; h; g6 w5 ^; A. t+ Y  _6 g. W
         */
    8 Z/ U2 q3 u0 M+ o3 S1 M8 i    Object getFront();& m- p5 n8 Y8 N6 P
    7 C& J6 X9 d1 V# G1 V" Z" q
        /**
    9 k6 k- Q3 A2 X. D+ c% t# v% w1 Y1 R$ z     *  获取队尾元素
    ( b0 a3 N" r9 K' H3 |/ [. B5 ]     * @return 队尾元素5 j0 g! F  m3 v0 o, V
         */$ \; ?: W9 r. S4 P
        Object getRear();
    $ Q7 S5 u( E: B9 t% f0 w
    8 C* y1 F4 }, @$ w    /**
    & U$ `; K+ m. }3 x. }4 [     * 遍历队列的元素" N& L1 u' K( U) p6 ]5 ]2 W/ f5 r
         */
    4 O$ D; p, m8 |' p9 {    void traverse();
    1 P+ V4 F; q1 f* L9 c$ ]}
    1 c8 Z9 M0 ]7 N# ^; n$ ^; x/ W: U2、队列的接口实现3 v) b! i% Y) ^: [$ W- n& R+ O& T' N% i
    /**
    0 e, @6 q( E# s; U% A1 | * 队列的接口实现
    ) M4 k7 D, Q9 C; A1 c0 P/ E+ i *
      X# K* ]  `3 X$ Y * @author zhuhuix' V" X/ _2 D9 G7 T
    * @date 2020-05-01# U- H! _/ ~5 _+ h- Q/ Y9 L8 d
    */% e& Q5 s: \. x8 O
    public class QueueImpl implements Queue {. X: N$ e/ q' @& u' M# \  A

    " _5 v! L  h1 }) \" I+ c6 b    protected Object[] element;
      T% A% }! z0 A: Q& |( v( L( Y, h
    3 z8 l+ J$ K  e    protected int elementCount;
    . J" n9 G) Q+ G' ?
    ( q' U% n3 U0 H. @' i3 g9 t0 |7 I2 a    //队头
    5 w0 d' c+ P# f9 [: o1 \    private int front;
    ; e! U* u6 f* G( ?' Y5 P; y& ]) H) i  b
        //队尾* j' `; O. U' y, L; ]
        private int rear;
    ) f% \& M4 d9 X( }$ T$ V& I) w
    2 m# I3 c# h6 q    private int defaultSize = 16;+ W2 B" [8 F$ i4 V" ~/ x

    7 d" Z/ r5 o/ n: S& S$ M! R    private int maxSize;
    ; _% A  w0 ~2 D/ @6 ^, r( a1 ^; M7 X$ n( G
        QueueImpl() {! f' b6 L  a' O/ F( h& t  H( k! G
            element = new Object[defaultSize];+ U8 b8 h* f+ U( G- l7 g( e7 g* }
            maxSize = defaultSize;
    . b4 `9 s) @$ k9 x: N9 r        front = 0;
    + S4 u3 E# n, P( ]        rear = -1;7 I" D. ?  X; x. g  w8 @
        }+ x& D8 G. j7 b  G$ b; ?7 E+ [

    % J1 N, T4 Q4 z& b& U    QueueImpl(int size) {
    ! Z0 Y# L. A' e        element = new Object[size];7 t2 U8 O$ y$ S  s6 M2 L) F
            maxSize = size;
    4 c  l" {1 D% f6 I; U. E6 c        front = 0;
    ' L" T  g- ^; w: K( P! G        rear = -1;
    - ]: K0 w. `0 [! X7 P6 y' x    }
    0 u; b6 ~5 `; t3 l/ l
    1 |) c( c4 U- j+ G) m' h9 v( Z5 u    @Override
    + z  B5 y/ S0 ~& X1 i, {    public int getMaxSize() {
    , A& N, o: M) D% K- `        return maxSize;+ j; J% O( r5 a5 V- W0 g
        }
    4 |9 D3 E& Y8 A2 E+ S
    ' [6 w9 o/ j9 U4 `4 {  N    @Override
    ( A' |  ?# P& A2 B& Z    public void push(Object object) {
    ( O0 m, v/ e$ _$ R* B, x  R: S        //如果元素个数已经达到数组的最大个数,则进行扩容% l- z+ o; U. ]
            if (elementCount == maxSize) {5 G- Q$ C2 ]+ y: I: Z1 u4 Y  r
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    , h" Y  ~2 |' F$ o2 }: X        }
    9 V3 ^& w# d, e+ Z& J; Z  \        element[++rear] = object;. k- h; W7 A9 L0 L& M' D
            if (rear == element.length) {
    ! b# H% A) [& a8 v+ }            rear = -1;
    ( h, q4 j7 h* m! r        }
    7 }: [. b( i! i' L: |; x        elementCount++;* k/ C/ l6 w7 g$ L. W
        }5 P- L- S* T! o+ C" n6 E
    . ?! r* V/ V, v" d! p* `" |: U2 {
        @Override; x4 h+ k  ]0 T4 k- ^/ Y1 G
        public Object pull() {
    0 Q7 M2 ^( z% H        if (elementCount == 0) {
    2 }+ Z% y7 ^$ w# m2 R            throw new ArrayIndexOutOfBoundsException("队列中无元素");, a" r. k% M: q8 l* P
            }! d7 {* K8 `3 `
            Object object = element[front];
    9 S9 |- C: _" O0 T$ H4 k; w        element[front] = null;) w+ Y6 A/ l" p; Y# R: [) h
            front++;5 m8 Z' w4 ?: U: d! w  Y- z
            elementCount--;
    ( w' {8 M# G0 A7 [: Q3 f        //队列清空,队头队尾恢复初始值7 h) w! E' p& x1 `6 A# d
            if (elementCount == 0) {  B3 G# Y7 P6 D4 D. o, t$ F
                front = 0;" \1 S% Y( @' d0 J5 v1 |' B
                rear = -1;
    . I! K- o; G9 h  |8 j1 P+ g% M  b/ E        }
    ! _6 K7 e" Y0 I; `$ O8 j        return object;& I" P3 h- Q, D" X) }$ [9 U
        }( g0 g1 ~& q* e& D$ Z
    " a. k' O: D, O' C' i5 {4 d1 g
        @Override1 I4 j2 G4 i9 M  V; P( n; {
        public int getElementCount() {
    - V! v$ X, l5 i! C% y        return elementCount;2 ~0 z, o( i  ^
        }
    7 a& ^- z0 H  ], O* G) _$ z- e
    0 ^+ o9 g' X, D& ~! L' v. @2 L    @Override
    . p5 I8 f3 e  T- o4 q) W2 B    public Object getFront() {
    9 L- P' }" i* u' h% `6 S. u        if (elementCount == 0) {
    8 p3 Q! X! w5 v; i# j& [! H            System.out.print("队头无元素");
    # e+ E# a; q4 [1 ~9 p5 R            return null;
    , I, k& K1 \" y+ s- _; B5 r        }
    7 y2 z9 U, J* N, O! L; }        return element[front];( M" d- ^+ o' s7 _
        }
    ( X; [  R8 E. k; h
    ' R/ x1 M+ j; n6 z; `    @Override
    ' G% u: h; O$ _) A    public Object getRear() {
    ( Z5 s2 J/ G# z! a+ A' W) [. j" A        if (elementCount == 0) {
    1 d  b* t9 {7 a9 [            System.out.print("队尾无元素");
    , }0 _8 D$ a0 u$ T5 |( p            return null;
    0 Z$ G$ d2 e0 _# r9 L/ ?9 |. [        }
    . z* j" j1 Q" G" p& B        return element[rear];
      T: |: z: a6 ^" I) F1 P    }
    7 r  B3 {: s3 E. N  F% n+ r, [) L4 p: e7 r3 }7 N
        @Override
    " n* W6 `6 W$ V* [. ^* _" n( M2 J    public void traverse() {0 I+ I6 m2 F2 J( F8 D' |8 ]+ `0 ?2 B* g
            if (elementCount == 0) {7 j2 {6 S' O  f  M1 G& [
                return;( U; Y1 C& D, X7 c" ?& e
            }
    7 \. e! S! a+ d; }3 |        for (int i = front; i <= rear; i++) {8 G: f. q& @2 P) C. d
                System.out.print(element + ",");
      w" e6 p4 I3 X1 B" l. B        }
    / H4 E/ k& V# A- m( s        System.out.println();$ `$ D2 b; x5 e* O
        }0 M, l% s7 ^, Y4 I
    }9 l4 V! F8 k: J4 Q

    + U' y0 V, ?! E; F8 B
    4 i8 g! }5 c9 w+ x3、队列的测试
    $ }. R0 U! R- x8 Jpublic class QueueTest {
    " t' ~& g% j- o5 W    public static void main(String[] args) {! Z" q- l+ {* W7 H0 ]2 f; Q$ q
            Queue queue = new QueueImpl();* I7 x, W& v5 ]" ^& G' g
    * P4 I$ W/ @( N& ?; g1 O
            //获取队列大小
    % a6 }4 l4 Q2 ?9 L/ J        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());1 e0 y6 k* y+ H! }* M

    3 q, j- x2 ~7 `7 m1 T8 G: h# t        //第一次入队列:压入1-15
    " ]$ {2 t/ ?4 ^# h/ V+ I        for (int i = 0; i < 16; i++) {
    , b# Y; p  u# @; u8 p" [            queue.push(i);
    3 J7 B, L  B3 ^$ j! J4 |        }/ N( Q: c- _5 i  b# j3 f
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    1 V- i$ Q0 {* n9 B  u; N, x5 {8 s! U        queue.traverse();
    . [; g9 o+ d$ n' B5 h: T  e        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());# f# D- j$ d2 g

    ( A9 r, D% _# `* U; e" R        //第一次出队:取出0-15
    : w2 t6 y- ]; W7 T& N# L        for (int i = 0; i < 16; i++) {
    0 V' }9 x3 D$ ^& k+ y            queue.pull();' W8 P' e5 l' h' Q5 B
            }  i$ B, y$ S5 b1 C8 _+ }
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    ) W8 V' g3 O+ I8 V        queue.traverse();8 y. K2 F8 v) G" R1 B8 U- y
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    $ {* {* f5 y: E( }0 m
    + o0 A" P4 i2 l) {# f) H' I/ P" `0 J
    / i( _9 F+ i) m; }  Z        //第二次入队列:压入16,31* [/ f" W7 Q$ W4 G- |3 b( {3 J
            for (int i = 16; i < 32; i++) {
    - B4 X2 H2 U  p! L            queue.push(i);
    # q; K- x& c4 f) c        }
    : {9 p/ `: b8 ?0 D        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    ! [- G+ ]' I5 L$ z& ~3 S" `2 o        queue.traverse();
    * C& O2 @9 U- ^4 a6 u' G5 {' u* X% L* `
    % m0 v* N8 \  T1 ]5 ^" y
            //第二次出队:取出16-31  g1 r+ O. A( y) n6 W
            for (int i = 0; i < 16; i++) {, |% I. t9 w: n7 c4 Z
                queue.pull();; z* b. q& j4 P
            }
    2 M0 `8 k7 N( y0 L0 Z1 b4 m/ ?        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());# L# b8 Z  S% m3 \
            queue.traverse();0 u1 u; X6 j! J5 X8 Q0 N5 X

    6 C, G- E" g% Y; u7 o        //空队列出队报错9 D8 \$ ^* k7 s2 G* k" n& G, ~6 f
            queue.pull();1 Z! n9 v- f; N7 M) _/ n

    2 l0 r& v! i+ X$ i9 Z) j: r1 }    }& j! z7 I, M" `8 |; }$ u0 |
    }
    $ n/ c9 y3 }% A$ E2 g4 Y! x! v5 n, b9 {4 b  O: i$ y+ H

    6 s, J( _' J$ w! r4 O
    " t# U3 B% L4 r) C7 q% Y: X' w0 P- x2 [
    : |" d( ?8 j5 E; ^1 @
    9 r3 ]2 Z! ~1 h7 {1 O4 ~+ D

    * G; M" n! ?% F; {( R9 ~& w3 {; `6 u( o- C" R
    4 f+ M% ^1 D5 t) j) d( o2 h

    ; T2 m$ j6 }  c7 ]& Y# u
    ' R  ~  @( Y. \$ V& [- c. U; T7 q9 W3 M  u: ?8 P$ q5 F

    3 N0 V3 y7 u# \+ E
    0 `& Z& f3 L) ^: r* P! m: q" |! p' k. {  I; D
    ————————————————
    8 k1 V. L/ ]  q4 k  |5 _版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    - N% D: p+ I( h0 Q- c+ V原文链接:https://blog.csdn.net/jpgzhu/article/details/1058767856 R+ G2 c) k9 }6 M: f- p

    , j+ W: B/ ?  U% G- g, ~! m! j$ p1 _4 {2 K
    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 23:05 , Processed in 0.414528 second(s), 54 queries .

    回顶部