QQ登录

只需要一步,快速开始

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

    % U. q9 v5 j# m2 \% `数据结构——栈(Stack)与队列(Queue)的手写实例
    0 u9 P$ k3 b! u- [, M& M8 b  u% w9 o+ w4 Z6 s
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      - e( `; h2 X6 c1 ]; ^+ T  d( R- a
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
          v1 m' j3 D* ?  z" m9 i
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试' \1 a. k0 `6 r$ `: M4 H
      • 三、 用数组实现队列# C; c- l3 [7 J" q1 j
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试% q1 ^! c, K' i" }$ u! m) F
    : r) K. a' `+ M8 r2 D) Y

    ( m7 T; X, w# x# L! e" k* f* ?一、 栈与队列的定义) |, Q) \% ]" }9 @: b
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    8 T- M, i) g( v2 I 1.png
    % W& l2 g& M2 Q 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。/ i4 D% A3 Y2 n9 _6 U% i; j3 f5 c
    2.png $ X  y( h& a/ f  e- n6 F
    3 c4 @4 a' m3 l* l/ ^+ f

    8 m8 p, n" r! ~: w0 T- d/ B二、 用数组实现栈1、栈的接口定义9 T8 l" a3 r* [3 C" s1 p( ]* U/ s2 E. Z* q
    /**/ J: e) }7 d" {7 v; M; w
    * 定义栈的接口6 r0 t* [" l% L* g
    *
    - L1 `; p% }7 U7 ^' b; h * @Author zhuhuix' `; x" q6 E. b
    * @date 2020-05-01' J7 J0 |$ W5 c3 F+ q! U
    */
    ; o& s+ O& B* P7 l% Cpublic interface Stack {+ A; E$ k6 C* n% ^
        /**
    * G0 }1 h7 u' Q% J; `     * 入栈
    & c1 O- |9 g/ i  @, X' Q# m' S8 g4 w$ D     * @param object 入栈元素% k+ e# t( Z+ W5 |; i# t
         */
    ) g2 m8 M6 h9 y  q    void push(Object object);. h: v! j$ N, i% F
    ( h* ~, G" G; W/ Q) M9 t- b& D
        /**
    & W* ~! Y- M9 A" t( Q: |     * 出栈
    5 K: I- l% v7 w, t     * @return 出栈元素
    6 F, `9 n: `& {; N- ?1 \     */
    ' i' J  D5 z. P+ J8 F' G    Object pop();: f+ m' Z9 G' F* b
    : X- I% e& Y& T# n: R* q, R
        /**
    & o- @* n6 n2 ^     *  获取元素个数( k0 M5 {3 [8 |1 t% \
         * @return 元素个数4 N: _/ P6 s( O' c1 I& O
         */6 I, F9 ~  c1 s' U
        int getElementCount();
    7 n' H4 \* K5 e! w6 \2 v
    9 w5 r$ r( f0 p' J* k8 E    /**
    + L. u) S3 A9 y- l$ a     * 遍历栈的元素& O' u' T$ p6 E# N, M$ D% C& D8 k% a
         */
    2 E' W$ }; a. Y) {5 i! ?% ?" J    void traverse();- k! b  n% J) f# A
    8 r" J  E' b4 L- Q& E# D, y( G
    }% J- [+ X, f7 a+ {1 X
    2、栈的接口实现
    ! I' W9 K; B- ?' a! v0 t/**
    3 X/ J8 H& `6 f1 O$ C8 {" B * 栈的接口实现
    : b* Y2 a: y2 e5 N *
    ) i7 x* r0 h0 {0 |9 V( d  L * @author zhuhuix
    ) E2 ?- w! d  c * @date 2020-05-014 [" J. w/ z5 w3 m
    */
    / {, \' n* x/ y- d) X  y9 Epublic class StackImpl implements Stack {+ I) X/ Q+ ]% R. X* z4 y9 e
            - l' `$ v) m) M: k+ e" ^0 X
        protected Object[] element;  T, y. k* f  r: w1 I

    % ]' Q  ]- Q/ \2 o# e    protected int elementCount;$ |  t1 l% g; p. v( e: {

    $ q  G! ~. b& t$ k3 f7 P' n    private int defaultSize = 16;
    - F& {5 G$ f* l; a
    0 F: ^5 _4 @) E2 q    private int maxSize;8 D. k7 [$ n" r0 F  Y% R0 y

    . B: {5 r2 K. b% K) @    StackImpl() {+ A' N1 S; J. Z$ E: a4 {: }2 N
            element = new Object[defaultSize];
      h9 O8 |8 `  R( {7 _1 s4 W* i  C0 A        maxSize = defaultSize;
    + T  p. f: H  m0 I  T  B8 B  M3 O    }
    1 ]$ V/ k- Q4 A# A$ Q
    * Y/ p1 N- R1 T5 V7 R    StackImpl(int size) {, z7 I. B9 [6 R( y6 r/ i
            element = new Object[size];) H4 F3 \$ F+ a$ z# o$ l, J
            maxSize = size;
    6 G# z7 f7 y1 d/ z/ E9 T    }
    : i2 J" d3 [) z+ Z# R( d5 X2 P/ t! l) {. L4 j) @0 z
        @Override
    % l2 H7 K- Q9 R! u% Y! T    public void push(Object object) {
    " s- y" d7 I' L1 M6 s5 w8 ^) _        //如果元素个数已经达到数组的最大个数,则进行扩容  s. _& P( z2 J9 D
            if (elementCount == maxSize) {4 l( y0 W7 a, S3 _
                element = Arrays.copyOf(element, elementCount + defaultSize);9 T; \: r8 x5 a
            }
    , J1 j1 {# O- \% i( D        element[elementCount++] = object;" r. o9 A( L4 U
      N; E; |/ V' {5 S8 F$ _
        }' z; |/ c8 U; o" p+ Q/ o2 a
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    % Z7 [9 E! l# Q+ n. W6 }    @Override
    6 X( q% g# e6 f    public Object pop() {; j8 z- i. }! J1 E- [% ~
            if (elementCount == 0) {( n6 ]9 b, a+ [* ]8 {
                throw new ArrayIndexOutOfBoundsException("栈中无元素");& n1 m; ?$ R9 B; l
            }
    ) I% D* i6 }( O. [+ l) T        Object object = element[--elementCount];$ m5 ^* d! j) r  A( e" m7 t6 o
            element[elementCount] = null;# F  u( q9 K* x% e) a4 k
            return object;
    8 U& ?; L' o! ^. L    }
    0 ?' \3 V. ~8 R3 D1 o0 G' E5 p9 x+ w' i$ f
        @Override0 {" e  y  U* |* y& y
        public int getElementCount() {1 v( ^; o% _. J: a; V) q
            return elementCount;
    7 u3 V( D3 {5 t    }
    + M) l: Z; [$ `! d1 t# h2 P* E1 R5 P' B8 o- m% L# Q- O
        @Override# ^- v$ f- V% {7 z  ?, V8 {
        public void traverse() {
    # }7 u% I/ f9 H4 T) ~- ]5 p8 C) f        for (int i = 0; i < elementCount; i++) {4 p5 A2 }5 Y) N) a) n
                System.out.print(element + ",");8 j# _! S0 B" e; e- u* l9 R
            }9 {$ x; s5 A* H( O
            System.out.println();1 `5 d5 I$ }* U9 e6 S* X
        }' f2 n7 h5 c6 e1 d* _/ t
    }+ P4 r% U  @2 f* i9 t
    3、栈的测试! w' C0 P/ V# B6 U% o  Y6 b% C
    public class StackTest {" O, D. V1 y+ K- p' h! m) G8 o
        public static void main(String[] args) {
    6 ]2 ?! q' a* N        Stack stack = new StackImpl();
    ! t/ w! a* w! q5 c* [6 N# e8 i) b) N7 x& }/ A4 |
            //第一次入栈:压入1-15
    7 X& c2 F; X, e$ N9 L; L$ j: L        for (int i = 0; i < 16; i++) {
    1 ~& X# J' f4 p/ y2 Q            stack.push(i);
    3 U: s' h& W5 t5 B; |, M5 e& E        }
    / @# l$ T- J. ]9 R8 [1 t; H8 {        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    5 m  x" @6 Z; g  A- F, o        stack.traverse();
    1 U* k$ Q6 z( D' h# q6 Z! c5 |) G; L+ h7 y
            //第二次入栈:压入16-311 ]' g6 ?/ F8 [: _
            for (int i = 16; i < 32; i++) {
    ; v, B3 {% |% e, m            stack.push(i);, y) |# F7 C8 U9 v3 s8 r) U- `
            }
    8 o2 @0 l% U) n: Y. b  y* ?9 T7 @        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());" J( z/ g% B1 S7 P4 ?0 n
            stack.traverse();
    2 U# \+ E) i* n- B7 \6 V, F: A1 q9 h$ T; A) a
            //第一次出栈:取出31-16
    % I$ b% |3 i" N4 c' Q& X7 P/ _        for (int i = 0; i < 16; i++) {2 d: @! k% n) f! o; _
                stack.pop();! a: f+ t! k5 S; v1 l- Z
            }
    , v: w1 G) W9 ^( t+ h        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ! k( R+ b# Q) x* ~6 Z9 x        stack.traverse();
    3 h" q8 U; x; W) k" l8 }- D# {1 o+ N
            //第二次出栈:取出15-0
    * K5 ~9 U5 J/ S3 _1 `' q& t- [3 h! X        for (int i = 0; i < 16; i++) {
    , R5 S8 e) H! {' x- y2 _' ]            stack.pop();
    4 V( g6 u2 z2 v' o) m/ W& k        }
    ) i2 _8 s& O- F1 Z/ R. G        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());4 r! D1 s2 A1 R+ S$ c
            stack.traverse();' I: i' _! L! j; M) W
      }0 I& z* @8 ]) o, n6 {5 ~3 ~
            //栈中无元素,出栈报错+ G- @2 O$ f& r- S) }6 t
            stack.pop();9 A3 a0 i' O, s2 H! ~1 ?
    , l6 G' f  M9 c2 M  r5 [4 l) O
        }3 v0 M8 m5 _1 N0 h1 I- z- z* `9 W
    }
    ) U) T, ~4 X, J- e$ ~+ w. Y 3.png
    4 t# f. S6 L: Q( Y2 O3 O
    1 [' ?7 D/ x2 @* y$ o
    2 X- G- m) ~; I/ ~' H+ P, b" Q& S/ q, E
    三、 用数组实现队列1、队列的接口定义
    * P2 a: k3 r% o+ w, Y0 p+ M/**; z+ x) v" y- Q0 Y  J. I) k
    * 定义队列的接口
    0 q3 r7 K0 u5 q  H: ~+ X+ |1 a9 ^ *
    8 b: M" q/ o2 i * @author zhuhuix
    # n/ d  V4 q  G/ u2 w/ h! n4 z+ U* ` * @date 2020-05-01
    1 M7 L6 p# T- C- S( p2 `5 [5 r */
    6 {; }  j0 l! O8 f) w+ ^  H* m2 z* O' Ypublic interface Queue {
      s/ {4 x/ _" r$ _4 h2 X
    : g: I+ s, o' @+ y    /**
    2 ]) y2 f: z# G/ }. S; f, D     * 获取队列大小; O1 ^9 r: @1 Q9 F: U( O! ~  V& I
         * @return 队列大小
    # x: K' B4 k2 j; R4 j- @9 x. u0 l     */! p' g/ b  i' o
        int getMaxSize();) _$ Q; X" S' Q2 u
    - ?, {& z, _8 P' C- E4 i
        /**
    ) g. S* M( t2 L) b1 u: Q5 b- X* C; R     * 入队( P7 D/ T: H2 |3 Y4 e$ }
         * @param object 入队元素0 c2 U) S2 m1 @6 ^" O" `
         */
    ' s) |) R3 M5 `& v3 H3 p/ o* p    void push(Object object);3 @! d, ?* u, q% c" y- {
    2 K: z1 n* H2 Q6 d$ Y" _. a; l5 f
        /**1 Q* o) m7 ^  G2 h  a& C
         * 出队
    : M7 O) D, W; |( D) Z     * @return 出栈元素
    . h: K" D* |( Z+ x1 e3 E5 c     */
    # ^/ x  U  p1 F: K! _  }, K    Object pull();" j% J6 u7 \( r

    7 A* M' v2 q, d9 W; e1 V2 V3 {1 R    /**8 c3 z8 i. Y( G
         *  获取元素个数
    ( b, s5 r: u; D; n* b. t1 n     * @return 元素个数; i3 a) e# I8 r5 M7 a
         */
    ' C! t. k% x  B6 u0 T' e    int getElementCount();7 i9 G5 K  X% |2 ^. Q) Y
    6 [/ _: ~% H2 n& J  I4 c
        /**
    9 X( z& T$ @% A$ e# P     *  获取队头元素
    # f9 v* E; Z8 h! ]" Z1 T) A     * @return 队头元素) V  N& W% ^% z  ?: K5 U+ C
         */
    6 K3 s3 l' Z1 l& T( d    Object getFront();
    $ e- h4 \; G3 Q, b3 n4 ?3 {0 [/ h$ z9 G  I1 F( |4 @
        /**
    * o4 n( {! c7 ~1 ?     *  获取队尾元素
    + E9 C. X& {6 a* G     * @return 队尾元素
    5 L: y5 A4 q# e     */& Z7 J( M7 H# ]9 B9 B
        Object getRear();
    / j" e' z0 l7 |
    4 s  V/ B2 E4 G; }; F& n4 c    /**) T$ k0 V0 q/ @) z3 U. h! c
         * 遍历队列的元素8 g$ |/ _& a# B% k& H
         */5 P: N; g! o2 I# A! H( P
        void traverse();, X' K9 ^  S. e, K
    }
    " W% u3 H9 a  k# L6 p) K2、队列的接口实现5 Q- Y; [$ y3 D% ~! {3 M0 h. J, ^4 q0 z
    /**" ?3 Q2 r% `8 i9 |
    * 队列的接口实现
    7 e$ U3 @5 h( }' T% I *
    2 X" A7 B$ a  Y9 t * @author zhuhuix
    7 |, d1 g' B+ S8 A * @date 2020-05-01% A; G8 G- t) S# l! z" Z
    */3 N3 V5 \1 s5 Z, q
    public class QueueImpl implements Queue {  R' [" M8 R3 q! G2 X

    . {) B; _  m* Z# W    protected Object[] element;
    % c2 W  R! F4 v0 W3 o1 t
    + m. \: H, v1 a/ c# W    protected int elementCount;5 Y' }- ~2 g. R

    ( P" @6 |- P% [! X    //队头1 O# I% l2 u( \. d! e
        private int front;- W+ F4 W5 {  J+ Q& z' G
    ! I8 g5 x. D1 }# \+ k) m* Z
        //队尾
    % G; Q: ^" x7 c9 S    private int rear;
    9 h' y' J: U: `' N0 U( h9 W
    ' Y- g1 o+ Z% v% X& `% }2 b    private int defaultSize = 16;9 s; i& H; w# }6 [' ?5 ~! X2 n! J

    9 u3 v. @2 K1 Q. L& n: j: E    private int maxSize;
    0 h5 h( n; ^/ K) K+ t
    9 u6 h! R, ]6 O' b- F    QueueImpl() {* B3 k4 m- }( n
            element = new Object[defaultSize];+ j) A/ ?8 F1 o/ j! R
            maxSize = defaultSize;
      ]; h7 ?1 `- P( Q9 S        front = 0;. n: [. C+ g( D) H& u0 B
            rear = -1;
    * L0 U  [0 c3 t( a3 j- R% h    }
    : U$ K! h3 A. a2 m- ]  [  F" C7 R- `% Y, i2 V0 C& _: z
        QueueImpl(int size) {& h1 T4 g: K2 r# @  T
            element = new Object[size];$ `1 X' F% k! f# _& n8 A
            maxSize = size;
    0 ?# m" [3 ]; N) u" `        front = 0;& _. E. a* y7 N9 ^- g
            rear = -1;( [9 Y5 h) i- d/ |3 p
        }5 R8 a0 X) _3 E8 p* m
    8 S7 S' `3 a5 Y# d# s; m
        @Override4 _5 ?4 |; [- r4 l( N( D
        public int getMaxSize() {% ~# A$ z" H, t: F
            return maxSize;
    9 Q: E/ ]2 I& \& Z6 N" N    }
      m( m0 i* k! W) n9 _; ?3 o" }  Z& L! Q" d4 u. F6 \8 c
        @Override
    4 z" n8 y3 p' \- N6 l    public void push(Object object) {+ {8 T4 ?* x% s( ?, c* }
            //如果元素个数已经达到数组的最大个数,则进行扩容
    ! M% R3 i% C2 J4 v/ \        if (elementCount == maxSize) {
    ( X, h" \$ ?: Y, Y            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    ( ?7 ^1 \4 j) n        }  K. D0 t! S: t2 I; L4 s
            element[++rear] = object;& ~' w! N) W- E8 Z7 U
            if (rear == element.length) {5 Z2 u" }( w7 j8 l
                rear = -1;
    / A" \- c. w% u6 Q3 g; t        }
    . G! J# Q; A0 ^, R3 |9 @! E        elementCount++;# s$ y2 M" m* p# p  @: o( v& e- N) j& e
        }) o3 p' h( z( e% H
    2 M: M$ Q9 p9 P( j  w  x) c6 Z
        @Override: a  g8 T5 n' v' \5 ]
        public Object pull() {
    * T3 t1 X% E1 ?: y5 V" c: W! j        if (elementCount == 0) {- w, {3 n! q! V) f4 F4 b' D+ i% G
                throw new ArrayIndexOutOfBoundsException("队列中无元素");. D  x0 I2 h% [# q8 {% d
            }7 P) l! X4 Y( r  p
            Object object = element[front];
    5 R4 N) J' N$ |9 u2 w        element[front] = null;% e9 ]7 k, ^# U
            front++;
    7 f; c: G5 U/ F/ a        elementCount--;
    + A2 [4 x; ]! [+ V2 ]        //队列清空,队头队尾恢复初始值
    ) j, J' C; z! S" j        if (elementCount == 0) {( t+ f5 m# A& i2 t6 b
                front = 0;7 [6 v. y( O8 |$ j# L6 Q
                rear = -1;# J/ y* x* S+ X, ~
            }6 K! K& }' A- ~
            return object;( ^' h, ?' A$ p/ e
        }. v& n1 q: R5 m" Z$ o
    & P, H& `+ L3 @$ v
        @Override
    ' A+ H- J9 z" e3 V    public int getElementCount() {
    5 g/ B. M; L8 u: [        return elementCount;
    0 c- |. c4 k6 Q9 I' G    }
    4 I. A3 G! s  R% N3 H; L: u/ a0 J" D: L! Q0 U
        @Override3 \; \0 H9 Z; @2 o
        public Object getFront() {) O2 v% h5 e& f: }9 C3 x
            if (elementCount == 0) {
    6 R7 i! F2 l$ u1 Z* a            System.out.print("队头无元素");2 G8 v( d9 K4 y2 k4 t
                return null;* k% d  ?8 }+ H
            }
    $ y" F& g; ]: `# H  z4 c! V" D        return element[front];/ l7 ]! s, w( z$ D  e, L
        }
    . M* Y, M: T3 V: L- y: l7 [3 S( M: ?: {4 H3 k
        @Override2 o/ r6 H/ ], r4 y/ e
        public Object getRear() {
    & Q: m9 K/ L/ U$ ]9 f! ^* d& o. l        if (elementCount == 0) {
    & F! x" _1 T0 e; y/ h1 N7 U4 Y            System.out.print("队尾无元素");/ T. ~1 z/ ]. E
                return null;
    ( g$ }' i0 @: [8 {8 E8 b( N3 ]        }
    5 S" a6 ?( C0 t; Q- `! m        return element[rear];0 @6 M; m+ L8 m$ o
        }
    # {3 x+ P6 I5 L( H: `4 m5 r$ A: {/ A2 Y) j' [& U
        @Override$ t5 d. ?1 f  y
        public void traverse() {6 P3 V+ |- `0 e' F9 A# P3 Q
            if (elementCount == 0) {
    $ b0 g  \$ G) i            return;
    % S- K( ~/ b/ A3 ?% c+ C        }
    4 E- w. b/ w' r        for (int i = front; i <= rear; i++) {
    ! K& E. A8 V  C7 {            System.out.print(element + ",");$ m3 v% ]5 g1 y
            }( V# f% p' j" X2 Q: L
            System.out.println();
    , P0 y$ |- a" d8 z9 M: K    }6 D4 S  z- p) j5 M2 W; j& F
    }4 ^# D1 q) ^" n8 \2 f- m# `

    0 {1 f& V, Q% H( B: K$ y1 }8 [: X8 f$ s) ^" L( z7 q! x7 ]
    3、队列的测试
    % i. S5 ~6 t& p. A+ lpublic class QueueTest {
    4 F% i$ @$ z! f/ t# A    public static void main(String[] args) {
    + v; p+ K; i* j! Y! Q* b/ I        Queue queue = new QueueImpl();4 t$ X0 b$ d7 n2 m* }
    % X; n9 X3 |- p' }: x( u
            //获取队列大小9 {$ M* R6 V! k
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());' z5 _% P1 `( |. @
    ; I( M4 M! M* S6 _; w, E4 z
            //第一次入队列:压入1-15: k% G" D! F* o' n( D9 M
            for (int i = 0; i < 16; i++) {
    6 g( S& w! M' L* O0 r3 h            queue.push(i);
    , y9 }  S/ g, x, w4 D        }4 `$ |: H% O/ _; j
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());- E- O! D+ ]" {( s
            queue.traverse();
    & C6 D& Y2 ~  G! t8 f3 Q6 g9 M9 Y        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    6 t. n( d  v7 v# N3 h! F7 g, o, M6 v' ~( m" B. a
            //第一次出队:取出0-15
    2 P, b; \( |; H( _+ p" ]3 d& e8 @        for (int i = 0; i < 16; i++) {
    7 Q! {& Z/ O" A' Y* \) c: ~4 [# V5 q+ u            queue.pull();, ]# v& |$ c' [5 P8 j$ U, r  {" H% e
            }
    9 T& r: S- I( `9 t' G- C$ r2 d2 v        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());/ G5 v6 I: O8 M8 L
            queue.traverse();
    - B! ^9 u: n" D: V        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());0 H) @  G: g4 i# Z3 c% z

    3 X; F! w+ b8 g
    2 D  Y1 D/ G3 U: x        //第二次入队列:压入16,31
    $ V% W) v$ s' R) @        for (int i = 16; i < 32; i++) {
    ! i; G! H) ~3 E4 K" F. y            queue.push(i);7 ~3 L% ~! [1 L2 E5 R# a
            }2 x$ f) @$ \5 L; k8 h5 u
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());* I5 t3 r, W1 _3 @9 |
            queue.traverse();
    . D$ j! N- G! f$ B, Y1 u
    ! Y/ I8 v/ d" F- a3 K
    ; O0 M' }2 R7 i5 [  l  s3 ?        //第二次出队:取出16-31
    3 i0 q) T+ H8 E& }. S* ~        for (int i = 0; i < 16; i++) {
    : u9 x3 t; F, m* A  H0 V            queue.pull();. w$ m; ?! {" p4 y) G  d7 V
            }: q  T. ?) M' h  @1 S' ~" p3 w
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    & Y) S& O$ x" e1 T. H' ^; N        queue.traverse();
    + d$ U/ p1 N, B. Z9 p( A# B
    . g4 r/ ]. U/ [- L" l6 }        //空队列出队报错$ I$ O* L3 k' _" U) v, E9 P
            queue.pull();- ]! V9 a. P2 j1 Q2 q( w
    . T0 n* x; p' v5 C  j& Y( Q
        }2 D. P, s" U1 j
    }
    ( s, `& q2 Q# B& m% c
    8 I' ~, o# W7 H  m: V; t, r  k5 n) c3 e' ^8 e- F
    * M& ^+ p3 t5 {

    4 F2 n: P' G! {6 {) p' M" b* a9 A
    0 e$ ?2 }& M& D; S7 {

    : V: Y) s. _: {; V% U+ `$ ?* j0 i/ @! D. _7 U$ m. x
    - G3 Q/ n  |! ^6 p3 P# K( K9 N
    4 g% D+ n* W) E+ X- I

    ; G$ L5 y+ e' [# @$ u
    9 j- g8 @% }. o( K& l8 b. m9 f
    ! ]& o) t# W) w) K& h2 f
    9 ?4 H. m7 I3 j3 G) |# G, G6 L& ^3 [% @% N, ?( a8 }) T
    ————————————————
    % D! ?0 a& n+ h版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ Y0 M$ P. G4 H! z0 v+ g
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785' A% f- A$ E2 N+ r* L$ `% H
    + l% \: C/ a2 M  D9 r/ E2 O

    & a% X) {* I5 f# y2 h
    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-7-26 13:34 , Processed in 0.848128 second(s), 55 queries .

    回顶部