请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1040|回复: 0

数据结构——栈(Stack)与队列(Queue)的手写实例

[复制链接]
字体大小: 正常 放大
杨利霞        

5250

主题

81

听众

16万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    发表于 2020-5-3 15:29 |显示全部楼层
    |招呼Ta 关注Ta

    3 I# D# Q+ k3 h) w9 L; l数据结构——栈(Stack)与队列(Queue)的手写实例. Y; m0 d, B0 T% A; K9 B
    " ^( z: |% D4 e4 v$ ^1 O8 x
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      5 s; t9 j9 T6 Q2 u$ y. E
      • 一、 栈与队列的定义
      • 二、 用数组实现栈% B* {- s1 B2 N; y( d  T
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          3 Y) }$ z6 b. m* X
      • 三、 用数组实现队列
        , G4 n6 z3 F8 h8 g$ |6 n; X
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试0 @7 `: D4 X( Q! E0 m4 ?

      C4 }% e7 Z' m2 L
    - x0 i% L$ f3 O# a/ |* t+ L5 b一、 栈与队列的定义, G6 n- U. b# L6 V9 Q4 s
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    - T, n! g$ K3 U4 l2 I  P 1.png
    7 j. ^6 W; `( e" Y# _, y6 g9 ?
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    6 t: Y2 m3 G3 T/ a  `4 l3 a1 v- i 2.png

    + M7 r9 f3 B5 C: l( v2 z' {7 \9 q% `9 U
    % r. v  s' A$ d6 d' w2 G
    二、 用数组实现栈1、栈的接口定义
    ( {! f: e) B% d! k2 Y2 v1 W/**
    4 ~# l$ a2 I/ {+ F9 S4 _! r * 定义栈的接口
    2 L# i' O+ o4 p2 |8 g *
    7 E; Q% [$ q+ }3 @" g9 \- [  M * @Author zhuhuix
    1 D' Q% |( F& U" f9 c4 { * @date 2020-05-011 |/ ~" r; C; R: U0 i
    */, y; m/ E9 q' t! F! w9 g
    public interface Stack {8 @3 b: A/ a; U  T& |3 s5 T4 Y
        /**; f3 B* j% X- J3 h4 X1 g9 T
         * 入栈
    5 m1 x3 m: k# l) g2 q8 G: y     * @param object 入栈元素/ T5 h- W4 H, v# c: ?4 K
         */
    + ^* o/ r. w" c    void push(Object object);6 m; z$ q$ }( A! {4 Q$ b

    3 V7 T; o8 N9 U- X3 g7 H    /**
    + m9 k# }) {; k  V     * 出栈
    5 I1 F6 J/ p) {* K- M; g9 i7 e     * @return 出栈元素
    * P, I) I6 l& A4 S+ e0 a  W+ S! F     */4 Y4 b+ x6 g6 V5 p9 n1 j$ C
        Object pop();
    ( j& R/ w; ?( R" x
    * y, W! Z4 A2 y& D    /**
    6 C: {1 D% t/ |     *  获取元素个数, W  X0 Y+ ~& B; n
         * @return 元素个数  J' J8 D9 P, z" Y% I4 U. ?, ]+ j6 V
         */
    " N( T# u5 U  n6 ~0 C7 `    int getElementCount();" l6 }) t* z3 i+ ?0 N( o& I
    5 y1 G* n# W( Z( C
        /**
    ( y/ b; P/ r! e0 l( E7 \, E     * 遍历栈的元素# v6 ^3 n) e$ r( O, {/ A
         */( B& Q1 `3 n+ ~  m) P
        void traverse();. ~" N! j4 y5 Q
    , T' g$ o, W( s7 \
    }+ e& G0 J6 v& H0 `, D
    2、栈的接口实现
    : `" P( x. _# p/ _/**0 L' G, a% G: L- M! j) s# W% j5 M
    * 栈的接口实现
    : u4 t/ }7 H, P( M6 `1 S8 M, c *
    # K; |$ B' ~) I; F * @author zhuhuix
    / ]% y- s; o. r$ X+ ?6 X * @date 2020-05-01
      z: y1 R; a* g0 ^, K! N8 k5 @ */
    ) A8 N3 p& \9 [  e1 U, }public class StackImpl implements Stack {
    0 Z# _5 m9 o0 g% u7 H       
    . v: _* E: i7 u1 q# U/ h5 W    protected Object[] element;
    ' e) k% a) |) z, @. J# x8 U/ {0 f) I, @7 O2 x  i
        protected int elementCount;
    6 B% w: h) R& B: x4 [# C  D7 Y
    : ^7 ^# ?' e& k3 F0 b    private int defaultSize = 16;; o" ]2 f+ O  W1 I
    8 d% p- Y  r6 G' ^- p! N4 O) b
        private int maxSize;
    6 R( q7 M' w1 \" ?/ e7 E1 x* U4 `! k- M# y; J; r
        StackImpl() {
    - W  C4 F7 h# Q( Z, a& ^! I        element = new Object[defaultSize];
    8 f6 F8 k! Z" d+ d  d, U5 i        maxSize = defaultSize;9 s5 ?! z8 W9 s# M. E% _- Y
        }
    * I/ O& h- {- q/ ?. E, ]
    ! R' y" g' W% }1 t" ], K    StackImpl(int size) {
    ; p$ J' f* H# o! }8 P" D        element = new Object[size];5 L4 M1 R8 K& x
            maxSize = size;
    , j5 p/ {+ E" T8 V    }7 P3 k# h3 f2 l

    1 A7 ~( g. s7 \+ I+ ^    @Override
    ! A+ j4 O5 t  J4 Q' L  {  ]. y    public void push(Object object) {/ `, `* A* m8 c  T  y
            //如果元素个数已经达到数组的最大个数,则进行扩容
    4 Z! P9 |  R3 }2 ]4 ^0 I        if (elementCount == maxSize) {. _, f  J' \( Y4 [2 D" M" y2 w
                element = Arrays.copyOf(element, elementCount + defaultSize);; ^0 J5 r+ B) N0 F& m# D9 [
            }
    0 p% q% f" _+ Q$ C% x& N" u        element[elementCount++] = object;
    5 I+ n' E$ A% `- x$ S, D
    6 W5 v" U. j$ i( p7 U    }5 n, ^( Y2 a3 M* {/ m
            // 本代码未实现数组的自动缩小,具体方法可参考JDK4 o' @$ e5 _0 W8 i: _1 y2 z4 _
        @Override
    - [# c7 k: C% p7 i" y    public Object pop() {
    ' H7 `  q  B" R- }+ [$ n        if (elementCount == 0) {
    ! z6 k6 Z7 b1 s$ o; t8 n            throw new ArrayIndexOutOfBoundsException("栈中无元素");
    , K0 u& S) K3 A  W3 B$ k        }
    ! I# G4 |5 Q5 u' K) {        Object object = element[--elementCount];
    3 P$ |  R, i! [5 F) {/ v* B        element[elementCount] = null;) S& K4 }- u2 H
            return object;6 _7 s- J, @. W5 K  f/ K
        }
    / c  G, ~( b9 f. }
    * @: @  [0 Y* v4 @    @Override
    7 P  I' c; R0 c3 z- @) \2 Z9 N    public int getElementCount() {
    * I" N+ b) b$ l: `        return elementCount;  G" F6 g; J( q* t; Y1 }
        }
    , M; X; p" s2 N/ T) v2 K( ]1 D
    - }: i0 C* U' `# J    @Override
    . j$ U# c, Y4 c; X2 ^& g1 w$ }3 w    public void traverse() {6 z5 _4 B8 E1 s' v: N7 e9 K" S
            for (int i = 0; i < elementCount; i++) {
    + G* _7 ~3 l% w' e            System.out.print(element + ",");  e0 k) L7 \$ v
            }8 f: a* \; b- o, Z: s" W# Q* T
            System.out.println();( [+ Z/ M4 z  E4 _% w1 [
        }- O9 Y. J4 _+ i" j1 x+ S/ v
    }& M5 i3 c& R/ c4 B
    3、栈的测试: B: d* B% b$ b6 R; k8 V5 T
    public class StackTest {
    - w/ c/ Y2 ?! e    public static void main(String[] args) {, `( i3 Z# s- t
            Stack stack = new StackImpl();
    0 ~# i' C; C" f- w
    # K5 E. R5 A: P, K$ p4 y6 B0 t        //第一次入栈:压入1-15
    0 m, d: C! ?- e$ \' Y; e; c        for (int i = 0; i < 16; i++) {4 X9 o8 }2 J& o, x1 h5 y; v: R; A
                stack.push(i);
    ! O$ }( z7 C( J6 H+ F        }
    + l+ B; w- p, Z        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());4 f2 Y4 ^, ^9 Q% X
            stack.traverse();) V; x7 T, c4 K7 d

    * V  ?4 X6 L: K* G        //第二次入栈:压入16-31( ^) h5 ?" y6 c
            for (int i = 16; i < 32; i++) {* G$ @; I- Y3 e7 w5 H& D
                stack.push(i);
      H) v5 b. r# B+ N        }
    $ k1 U" a$ e- V$ ~4 ]! Q% e2 v        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    6 e1 w) N: ]' b# |  [% H  x  o5 B        stack.traverse();
    : w2 p: e, ^; d6 V
    : M# w! J' \% h        //第一次出栈:取出31-169 {  Y& o% \& u
            for (int i = 0; i < 16; i++) {
    ; _! y7 ]- ?8 j) l* C            stack.pop();! U; @8 m; O7 t+ |( h. u* k
            }  j* W8 R6 R0 i$ g3 i# K8 F% R' M
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());; b7 i* {8 u1 C& R8 q
            stack.traverse();
    7 {1 |  H- k9 T1 S/ A( M0 ]2 Q: U( \- s9 y; e; V
            //第二次出栈:取出15-00 u% F% l* f4 k% y
            for (int i = 0; i < 16; i++) {
    2 x8 r) f' x5 E5 L* j1 _6 l            stack.pop();
    % @: V  s& C9 O/ [        }' }7 f) u2 l1 i: s! l
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    " a0 j7 w/ d7 U        stack.traverse();
    $ l2 x3 y0 _& }3 l3 B( B  |
    5 ^2 e' i# w# s0 s; R' Y9 P        //栈中无元素,出栈报错
    5 I! q6 C# A; b& _/ _& y5 d        stack.pop();
    8 Y& ?  D  K% B6 H4 t$ L3 c7 R! H- ~  d, C- n" m& \) Q
        }
    * V' R8 e4 q2 Y  q8 h  l}1 Q* c/ y' M/ y6 S) I  @! o  v* o  \
    3.png
    : a* C; v( g2 ?$ b
    ' Q; U0 a; c, V* Q) q
    / W! Y: N6 T) |, O! }: L

    & R# y) }8 `6 v9 Q- F' E三、 用数组实现队列1、队列的接口定义$ L$ H8 Z# Z" H% \
    /**
    5 d! j, W# X7 M# { * 定义队列的接口" _& |' N. v  }; e! M* n$ I
    *! n8 ^& c$ i  X
    * @author zhuhuix9 L/ g7 K, G0 Z5 r/ |+ B
    * @date 2020-05-01% F' W' b5 \1 Y; k! d
    */
    ( h( k0 @% z5 X& npublic interface Queue {( g( T8 u' r1 F: v) }/ I9 i
    % k* R" @' S/ q+ h4 m
        /**) _6 A/ {. F" l% r
         * 获取队列大小
    7 e6 i8 l6 T! [" F0 z' R     * @return 队列大小
    4 ^' g, _' o) @     */- E" s; I4 V+ G. H
        int getMaxSize();
    4 m! U5 B# T" j. m; Q- c: Y1 N) Q9 t7 l1 h
        /**9 v% p5 i6 V( R  ^; D
         * 入队
    8 N% H4 [& P" M( Z1 C$ S     * @param object 入队元素7 _6 Q( V1 C. l7 `, _  t/ N
         */7 F& N  X" n5 w( L8 z) W' b6 \
        void push(Object object);
    " V% m1 z4 M1 j6 G3 j
    0 i9 c- H' p$ [/ ]: C/ J7 R    /**2 G' I9 f! U1 t" h1 [& t) I$ e
         * 出队
    9 s8 q( v$ L' v. z. T+ p" K7 t     * @return 出栈元素
    # s% ]! ]: c" G1 Y/ K     */, A. `1 Q, {8 e. G2 X& {
        Object pull();
    + E  b; r, \8 `9 j9 u3 E+ U: Q+ ~+ {5 h' W$ [8 }( X
        /**/ M! s. c) b9 o8 {$ M
         *  获取元素个数
    , a% z  Y4 z+ A& w8 L     * @return 元素个数# S9 r- v6 x. g3 ?1 L$ ~( q
         */+ x: M& E) _$ C. ^7 `) b
        int getElementCount();8 K* C# {# w# Y) s) K

    ( U& R& M* a) a# S; l    /**
    . S8 _) j0 ]1 |  W* }1 t     *  获取队头元素3 ]) ~( X8 O; P
         * @return 队头元素" Y4 u- X- _8 ?
         */
    3 I& G# R- v3 ]  f/ R    Object getFront();
    3 [* S/ ]8 x. n, Q0 j$ ?" r5 k2 @% P
    6 c" J' L' G6 l+ u" p    /**( ^& @2 Q) n0 ?5 v0 g' O! I& Y9 n
         *  获取队尾元素
    6 l; U- w3 c8 H, |9 g( T3 X     * @return 队尾元素
    & z2 e6 c! v/ {% W5 M/ }3 r- I3 e     */6 d- J6 @4 _5 _! Q! c! K2 n
        Object getRear();
    6 D4 T& w" w& v* ~$ z7 ~0 B1 E' Y# l3 o! O+ J6 `- \
        /**3 U2 Y' T1 {7 U" T; ?. a
         * 遍历队列的元素
    . J& D# j0 n# j6 Z  U     */2 L7 w$ f; `4 w  q$ Y  Z  J
        void traverse();
    $ Y  f0 m: j* C& b6 E# ~}* Z# X5 U! X+ {4 L9 e0 a& o3 i
    2、队列的接口实现0 o1 q! S7 N+ t& |
    /**
    % Z4 b  n  V8 E5 E& g& e6 | * 队列的接口实现2 B- T) A9 h6 O6 e8 b
    */ o: x& y+ o2 O$ B9 K4 J9 G
    * @author zhuhuix
    & f" L7 C' x1 E3 y * @date 2020-05-01( Y$ [3 @  K- E+ [' T
    */  l  u- v: p: W+ F6 N$ V
    public class QueueImpl implements Queue {7 [9 A3 k% R- q9 W0 Z( K6 W7 {

    ( h( c* v5 z$ y' l, |    protected Object[] element;- v; P8 {1 g, x2 _* K* q" T( ^
    6 b# g0 W4 o) h: A
        protected int elementCount;
    ; P4 k% L, A+ m9 j9 Q& q/ R' E+ @/ y- C
        //队头
    2 B6 k8 U1 H+ v. D) @" N. n0 t$ p; o    private int front;
    / u9 \& I  q1 Z+ @6 l7 u; D
    " s6 i' x& ]% Q; S    //队尾
    - `, D; c; R5 N6 n    private int rear;0 @0 z' o, I; G/ f/ J3 e- q+ C

    9 b/ t' J$ d0 f! y8 _    private int defaultSize = 16;- V, T1 V3 K6 V1 D7 A. Y8 a

    : n/ ^7 s' C7 T) [: D' q$ x2 i    private int maxSize;9 A% x1 J  b8 f. E9 i

    ) M3 c6 j7 L, u- L, h    QueueImpl() {7 l5 P) B5 D( k/ N! O( G/ |
            element = new Object[defaultSize];
    + d- G, g$ i9 q# P, @" b: v7 [' V6 \7 I        maxSize = defaultSize;$ b( D, @! D4 b7 J2 }# J
            front = 0;6 K$ T, M  \+ T0 f
            rear = -1;
    ; c. k9 V- g4 a2 @* Z    }% I) X* t& P2 M; [2 ?
    0 y1 n4 m( y) B' ?/ s1 t
        QueueImpl(int size) {, k# H6 W( w3 ^& g
            element = new Object[size];
    ( d+ S6 M1 U, ?# I/ H        maxSize = size;
    : G2 }( k+ X! m5 P! O/ S! P& M        front = 0;
    " s* _  c" }8 @3 ?        rear = -1;8 J/ z6 H* e$ C! F
        }
    / [. {* Y: t/ ?5 c* H8 b! D; Z. t9 u/ Y6 s7 m/ n0 R( I- @5 C( Y
        @Override
    ; s. I3 z( g7 t+ x8 z  e7 y    public int getMaxSize() {
    , s" K  y* i) l+ O, E8 f        return maxSize;
    ! M/ W/ l& t# K: U    }
    0 N, n2 ?3 t8 U
    ( O# M" I! j' Q. U    @Override) U; N2 C$ v; X% r% c
        public void push(Object object) {
    & _& l/ G: F+ l        //如果元素个数已经达到数组的最大个数,则进行扩容- U( R- I9 [; z' _0 U
            if (elementCount == maxSize) {) ]9 d* L$ i7 l
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");) t9 G1 K; R+ v
            }
    0 ^2 }' H2 k+ H# Z, Y  }' K        element[++rear] = object;
    9 ^% I6 B9 s  l; y5 Q& V        if (rear == element.length) {# F2 V( ~1 I+ d  c8 z- X8 r
                rear = -1;
    # P) n  x7 H4 g4 x2 b4 A7 {6 y: A& O        }: c+ D- e  y/ N" z2 s
            elementCount++;& n  j! c* [+ N9 l
        }
    ( W) y& k4 _- ]& v6 Y
    . I$ E  I% f4 y- S4 `: u7 r3 N! n    @Override
    : ^; o! {9 ^) j! E4 U    public Object pull() {7 s5 Z  C4 g" G- u
            if (elementCount == 0) {+ l6 s0 U7 k& B3 L6 q
                throw new ArrayIndexOutOfBoundsException("队列中无元素");$ T9 M. i! o  u% H5 ^
            }
    . h  |2 N  s  i; t        Object object = element[front];
    & ~+ P8 I5 L9 ^6 o% K        element[front] = null;( Z% ]% M8 g# c1 u1 o  S# r
            front++;& K+ }# W# F* N, ~6 p. L" Y
            elementCount--;
    + z/ q7 m1 q) d2 a4 m9 h% D        //队列清空,队头队尾恢复初始值
    ! }) l! i# I7 |; z( X( ^6 o        if (elementCount == 0) {' c" l+ G& \5 u/ Q4 U3 j
                front = 0;
    + p4 R* E5 v+ x9 J( G1 d* a            rear = -1;
    + E8 k$ s; h5 |- F" S        }
    ; J, Y/ U5 ~  Q" @# W' Y        return object;# s7 n1 d9 D& P! E6 X5 ]
        }) S0 w, R6 b  ]9 E

    6 l  |( ?2 _7 L  o4 y# L    @Override. r8 `" l1 g; n+ P6 L! R8 b
        public int getElementCount() {
    + ?$ I! @& m: l+ Y' `. n: I        return elementCount;
    4 C# N3 V4 ?1 x9 [    }5 t& o$ s1 Z+ @
    2 m8 |! Y: r# u% O! P6 \
        @Override6 h0 {% ^9 T, j# Z- w4 t
        public Object getFront() {
    ' `# P- }7 D) @9 ~3 f        if (elementCount == 0) {
    ( l8 v0 L  u( n$ e, X" o            System.out.print("队头无元素");
    - Q' k; m9 P: P8 F! f! \8 i            return null;( N& w. j! M& ^
            }
    ' e* P9 v1 A+ }$ c" W) a2 T, x        return element[front];
    " S+ ~0 b5 S$ X: l    }7 }" G9 ^# b" d
    2 E8 x$ w  t2 Z* r
        @Override
    & h- i  |# z- J) z    public Object getRear() {
    & B* ^. @. f$ u: @9 y9 J: j% R        if (elementCount == 0) {, O) A2 x3 r& N- S0 k5 m
                System.out.print("队尾无元素");
    ) e9 e8 e* V% r- B' S            return null;, S& {/ n( i3 s5 g! L& c. n
            }  e! R- H* b5 A5 H- q6 I
            return element[rear];& B. u  ]4 t3 v  m- q
        }  v3 ~( m9 s/ o. s+ D

    8 u" V+ `' U+ _( a5 K: j; X    @Override
    2 q, R4 s5 x1 M3 B+ ~    public void traverse() {# M% C9 k& s/ t  B
            if (elementCount == 0) {; e, @& N- B/ Z. S
                return;
    , ~) Q0 u' G6 F        }
    / d/ L8 n0 k0 V. U, n        for (int i = front; i <= rear; i++) {
    6 G8 `8 ]+ i8 S  e            System.out.print(element + ",");5 |' ?7 {/ ^! c6 |8 y
            }# L4 N2 b0 ^# l% {2 v
            System.out.println();
    ' ^$ p7 X8 e9 \4 j9 {$ [    }
    : {3 t8 S: Y/ V8 ^" |}9 v; p; Y' g( g3 A3 M
    . j; j' Z& f! y3 V3 q

    * g# n2 ~. {% n3、队列的测试
    % f! y! {! R, {$ e" ?public class QueueTest {8 s% |$ W" |0 J
        public static void main(String[] args) {3 N, _4 E# [# j# P/ p
            Queue queue = new QueueImpl();+ r6 a! e0 o7 @- l6 R0 F3 N% ^3 n% B

    " n% w6 @' g0 ], S        //获取队列大小# v/ Y; T/ t3 D8 v) o
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    7 l# {* ], Z2 X. @8 G
    ( B$ o6 ^; ], D4 l        //第一次入队列:压入1-15
    / |7 f: A& o( j6 x8 g! H        for (int i = 0; i < 16; i++) {& v: O, E% ^( y" o* h& b. m
                queue.push(i);* ^% c" t  ^+ P0 i5 J* p
            }+ L5 ~& l5 B; U0 E% B
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    9 |; h! C  V% L* r* m) B  Z$ x        queue.traverse();
    * e& S6 V* c* u# T        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ! q( `) e% u9 m0 ?, H- D& k2 V. f8 L) d7 r5 h' I
            //第一次出队:取出0-15
    / J! n6 ^! {. a7 X' N# E        for (int i = 0; i < 16; i++) {
    / Z: A3 ]3 c, Q2 j: S9 k, y            queue.pull();
    0 p, I, Q+ \0 N% Q        }% j6 x# C+ n1 B3 ^8 y
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());0 Z- c- Z- N2 \
            queue.traverse();* ?$ o8 @6 R  H: Z' F' X, |! A, o
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    " @3 e3 q( `+ ]8 ?) Y; j
    1 G$ N: d4 D" y' {6 f/ V
    1 }" e) M7 @3 E% P/ {        //第二次入队列:压入16,31
    9 t2 Y3 `3 F5 Y, l0 w        for (int i = 16; i < 32; i++) {
    1 O; F' e& T+ s) o# Y3 g; ~, b& I) _" Y& u            queue.push(i);" g: N$ q2 @/ M( w0 X, \. j
            }: ?( h( F& T% U& u- [2 y
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    & M3 ]  e( y' @$ h5 g) r% O7 v: j5 q5 U        queue.traverse();# R# I8 z: H. |7 k8 Y; {' s& ^; d% h
    1 R6 k% s0 i! b* E8 B5 k) p
    % d# W5 j* Q; d7 {! |
            //第二次出队:取出16-31
    ! D) |5 u* ~8 {% z$ D; J        for (int i = 0; i < 16; i++) {
    ) N1 q& u  ~5 T! M) O            queue.pull();9 Z$ R$ b, _+ H0 }7 M! p; P
            }7 m- f6 Y+ K1 T; o5 M
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    - r2 o& |2 A9 s9 s- S0 c9 _: \        queue.traverse();
    4 A7 d+ o/ {4 t( q  K  g  m
    5 B/ [* c; P! O" D        //空队列出队报错
    : r1 k" W5 g% |' P1 C3 f1 \        queue.pull();; b, ]4 Y+ k* }
    & _$ O3 q* J. \' m; s7 y# D
        }* u! ~. |9 E% K
    }
    / \6 t! t0 T$ H6 Q' V2 n* B" T$ M
    ! ?2 t+ f/ C8 ?+ i
    , I# v8 l2 X0 m( k# K; y

    8 T) j. S2 ^$ J( L+ h) Q& x
    * b0 r9 L5 d, f6 p* J, z! d- I. Z$ u9 z# Q- a
    " t+ ?% e* t: {7 C! R* c
    ! r& K: A* Z; j7 @. N% u

    ) s- E" ~6 D0 l# {. K2 ?  @3 F& @* O! j& F& W4 H* Q
    8 y( }  x& T/ N

    $ z# F) X+ x8 K+ S9 s0 |: `/ Q* J, k9 G

    / e' U5 U: Y7 W; e
    ; x! N2 \% _1 |2 p# J————————————————
    2 r# ?5 H- `* H9 [1 ~# u版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    % U+ Q* d" w5 q8 b8 e* i: i3 O. g( y原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    ; V4 s" _- k" |7 U# B4 D" A, V% _& U1 G% _7 W' O% P

    : o  B* G7 m% d+ q3 K/ y8 z9 S
    zan
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-3-29 05:41 , Processed in 0.462588 second(s), 54 queries .

    回顶部