QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1708|回复: 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
    " t) ?2 v* L( v9 Q, q' [+ {1 A$ x
    数据结构——栈(Stack)与队列(Queue)的手写实例$ n7 Z$ C( I7 @. |1 ?5 a4 f
    / D+ ^* `9 q/ z8 P
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      6 A. G0 t/ W- D* W, T
      • 一、 栈与队列的定义
      • 二、 用数组实现栈, ]0 _+ i3 B) _" w! s# ?0 M& I! A1 _! ]
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试# W; e5 ?/ n* p- i) f. f. r& u
      • 三、 用数组实现队列
        3 ~- Y5 m4 N' _+ m1 z. N
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试5 y2 b; [9 k+ t

    2 q9 o0 q( [5 e: X! Z' C' U" D1 X$ m6 H$ l7 V
    一、 栈与队列的定义
    + y% E" h: Q' j' ^7 B5 \: ^, d: e栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    " c" V: S- _! O$ D& t2 A: Z1 _ 1.png
    & o% j- `3 ?, ?/ Q) j. A 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    ( x, w3 a& V) r' c# U6 s& |  ~; A5 B 2.png
    9 a' L5 H# k3 v0 x& \! U% H+ I2 D8 G; m) w$ g

    - |, f0 Y. |+ b1 y, @. {/ \二、 用数组实现栈1、栈的接口定义
    3 E7 i& ~# T' d5 g! e) e! r/**
    7 ]% T4 Y7 O% `6 Y+ K * 定义栈的接口6 a0 i$ j; g, w! n0 Z0 n) L
    *
    - f- E8 r% G9 d3 K* s8 i$ I * @Author zhuhuix
    2 f% w0 `( a! \) L4 w * @date 2020-05-01) i3 C% A- F1 c4 j& R. d5 m
    */
    ' F0 \& C: z2 j! @. J  i* Q2 c3 cpublic interface Stack {- f9 k+ F- v5 v7 Q5 m0 X8 ?' B
        /**
    $ ~; `/ y, c) j5 }+ N3 k     * 入栈
    ' Q2 f" ]+ e0 a7 }4 a- q     * @param object 入栈元素
    # o1 [- V6 i6 U( j2 b3 q3 `     */
    , \7 R7 Z7 c5 t* x6 C    void push(Object object);
    " j. R, U6 f  l% P0 w6 Q$ N  w) l4 P; ~( r  c% L
        /**) H. t( t! A* ^8 [: d& p+ }( T" G0 [
         * 出栈0 i. T0 U) @, K& Q, z0 j0 p
         * @return 出栈元素
    2 x# `" J* D0 l0 I# @     */1 \, x* o! x: U" m/ h. S- L2 _
        Object pop();
    0 K  V, K- G  T
    , p% h/ r0 Q  o    /**
      s0 o" q& y/ a: H3 y     *  获取元素个数
    # G7 s! n3 J4 B$ R2 T/ e. s     * @return 元素个数& I2 Z, U5 i3 }7 e: f
         */# \, ]- |/ s- m2 Y7 B4 _  G3 G
        int getElementCount();
    - H! e% g1 a$ l$ J' d9 G. K# d3 ^
    ' @* y2 @% C8 ?; O' v, L    /**
    , y) f( Z4 p/ t9 U) z1 O' [     * 遍历栈的元素  s' ]& r, B( j3 Z8 q" ~
         */: s& M5 e7 [6 I& P4 n& r
        void traverse();  u- t0 d# @2 }$ H
    6 K0 o7 |! r  X
    }- N; @. B  r. \) i
    2、栈的接口实现5 U$ o, _; M' n; P* b, S
    /**
      ]- t; v8 S" `$ S0 U" ] * 栈的接口实现
    1 j2 Z! L  v/ C& D" ?3 M) ? *
    ; \+ F7 P/ Z6 I3 m. U * @author zhuhuix
    / d6 e' K$ O0 u+ d" V$ l * @date 2020-05-01; S3 B1 B8 O- t* \' Q' W. b" F; C+ @
    */
    ( y& c8 ~9 N' ]( i: K& upublic class StackImpl implements Stack {
    3 p- ^0 k+ u6 i% _+ |% m0 P        % M" L% [  F6 z1 k
        protected Object[] element;# I/ F* f$ e# W* p. n( B. V# z
    " }4 h* y  i, f& Z3 G3 ^
        protected int elementCount;; B% _1 q& A" l4 G& s( y

    # P" O8 [5 S7 D5 p# j% l( n    private int defaultSize = 16;( m' \  `# U; L0 G% l' h" ~# X0 W6 K. t
    . E4 w: L- z& @: ?, G
        private int maxSize;& y3 ^. Z& ~! u* s/ I
    * k/ [. C! @$ q. t7 Z; @8 C# t
        StackImpl() {
    ' B. y5 X  H$ `' S8 E        element = new Object[defaultSize];/ y, B6 i- E, R/ N. p- I
            maxSize = defaultSize;
    2 D7 p9 c' T% d+ ]& F    }
    , D2 \) L% h' l6 X
    ( V, P+ B. A/ w    StackImpl(int size) {+ h. j4 m2 l5 K6 E
            element = new Object[size];3 H" C' d8 w) e" v! B
            maxSize = size;* Z, e5 [; G: ~' P2 ]) O1 U
        }3 ^1 ]. }( q1 R& L% s7 _
    * c8 k# W( z, W
        @Override
    : z" \  R, ?! a  l8 X5 g' d    public void push(Object object) {
    ; ^! y# N1 g, a, z+ h  y6 o        //如果元素个数已经达到数组的最大个数,则进行扩容
    3 M# S$ Z. x/ p5 l, ]- L) g& Y        if (elementCount == maxSize) {
    2 x  O5 s* \% D, n1 r4 e            element = Arrays.copyOf(element, elementCount + defaultSize);7 L+ u" P! V: Z) C( z" K: X- m
            }. d; p# L9 ]0 [$ W6 J
            element[elementCount++] = object;
    ! O2 n% d) C$ t! }& b2 W# B: y# |2 p% A
        }+ p* {: G+ `. j+ e+ x6 }
            // 本代码未实现数组的自动缩小,具体方法可参考JDK3 Q5 Q7 A* l& L9 q) a& V, `
        @Override
    3 v* q6 o% Y% F5 t& P' \    public Object pop() {5 @0 f5 g# i6 y/ s: g
            if (elementCount == 0) {8 w9 ^$ |/ W7 f/ M- c
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
      B, f0 r0 q4 n( K) n% N        }$ Y5 Z* g5 a' L' {: r2 Q
            Object object = element[--elementCount];# B: A7 S2 U# F+ n6 E& S9 H
            element[elementCount] = null;/ Y9 J) p. d# k3 F4 [3 a
            return object;
    ! _. P( q2 @( x8 ^3 t1 t" E% f    }
    ! E$ q& H+ _' Y( E* v; E3 U( @& |6 n
        @Override
    5 _" y7 P7 D- K6 K6 Y    public int getElementCount() {0 ?5 J( Y1 q; O
            return elementCount;5 d3 I8 s& S% o7 J
        }
    / X4 u8 _* [4 I: `0 k" @
    $ \) E$ _) U7 O* G  n    @Override
    ' u# z& V3 W. @; g8 f    public void traverse() {
    0 P# o0 ]; ]4 G" r( X; n# o        for (int i = 0; i < elementCount; i++) {
    2 s9 Y+ X: V1 c/ H: h            System.out.print(element + ",");
    8 F( |6 R- i$ o4 s2 T        }
    . P" n2 ?" X1 K+ w        System.out.println();
      H& H5 y& O0 E/ \+ p2 V% E! F    }
    ! ?2 W% m6 g$ T; u. S: _}% O( v% ^; k# D% E, I- i) i
    3、栈的测试$ }0 ?( y8 B+ N6 q
    public class StackTest {' M$ ]0 P" ]3 V9 ^# l$ F- {$ w
        public static void main(String[] args) {5 n( i+ n/ c8 n- B$ x0 A  y
            Stack stack = new StackImpl();
    ; }; h. r) L5 n* I9 y
    ; H( l5 b# q) p5 G8 P        //第一次入栈:压入1-15
    * N" T' h, G  V5 b9 q8 O* D  j        for (int i = 0; i < 16; i++) {
    : C" @! r! d1 }! C            stack.push(i);+ q: e: @7 P9 \" V* l1 w
            }
    1 @. G; }& @7 \5 v        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());6 F4 P! A  Y/ g+ }0 d
            stack.traverse();" c% o% q/ K% _5 ?6 e

    3 p2 X: T9 Y6 z2 w        //第二次入栈:压入16-310 f, Z% e7 J1 {  o7 F0 }( D
            for (int i = 16; i < 32; i++) {
    * N. _6 O# W* |            stack.push(i);% \0 f% J& l; M# q$ I
            }
    , B* d5 ^; E+ v& v/ n% C4 j# C. `; ]        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());, O3 R, f. C7 i$ q/ H9 O
            stack.traverse();  f: n  d8 m5 E3 K

    3 W3 T. x# x8 {2 s        //第一次出栈:取出31-16  O8 D/ @4 ^+ u) T4 y/ H
            for (int i = 0; i < 16; i++) {
    . H: P8 T' Y' x7 v2 P* s            stack.pop();
    4 M; H& A" O4 }        }
    ) L6 F3 d: Q  t) ?) H3 Q        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    $ x+ y4 q2 B* {& A, r# W5 @6 j        stack.traverse();1 L. q1 ]+ E# v: b

    : m0 l/ q3 @& w( ~( y5 Q& e        //第二次出栈:取出15-0; Q8 V4 a+ q% M( Z
            for (int i = 0; i < 16; i++) {
    " P% g( Z: e+ m# U            stack.pop();# C1 e' c& I5 X  O# a$ N& W
            }. P& q' g  {9 y
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    0 T0 T! t% U4 Q% }% a- f- w, C0 v6 Y, d        stack.traverse();
    3 ]( X8 p  a9 d# O+ y: \- E/ D3 P5 ?# z$ M& d1 b
            //栈中无元素,出栈报错
    0 P# O5 c6 F( p6 ?; O        stack.pop();+ O3 s) C/ p3 s% V- j( D+ M2 b2 b
    $ P9 _. u0 j0 l- O: L
        }; k4 L. o( R  q- {; t
    }
    7 d6 i0 b+ V8 h( n& N& a% @ 3.png
    7 n" X; M$ ^8 {. w! `9 W* i+ _0 N; Z! g5 t5 h5 Y* [; U7 b2 C
    ' t: B  d8 R5 @/ Y
    ! t" _6 F5 J9 _4 D7 |7 p% h2 P5 V0 \# p
    三、 用数组实现队列1、队列的接口定义
    1 P0 P# T) _- F% @/**" Y6 @- B0 e- }6 w( s  h
    * 定义队列的接口5 m2 k7 T$ v* O9 I2 ^& r, C
    *: S! L/ m4 m' {% \1 p
    * @author zhuhuix
    1 t* K. Z  w) D" G * @date 2020-05-01
    , C& l) o& n8 D# N3 s  O- G */
    8 V2 X6 Y+ J4 d$ q5 f% r# s! mpublic interface Queue {# p- t. o- H6 d5 v+ M
    / ~* |7 }: b' A6 U
        /**9 B: @1 f) g+ x; t1 p4 f0 A
         * 获取队列大小
    8 b* Q9 i$ H4 L" s% u, ~. O  g     * @return 队列大小
    1 l+ N) n- b+ j% G0 e4 z* \! }8 q" I9 ?     */
    ; [. U1 ~9 u  `9 q7 n7 G3 H    int getMaxSize();4 j5 w9 A  I# J& g

    % _5 _3 w9 `# X- h    /**
    % l+ k' V- ]8 f2 ~: R8 G     * 入队
    5 l8 U' ~) Y- \2 E1 w# T     * @param object 入队元素7 H* |0 Q. k! j+ X/ F9 X
         */
    3 w' e7 n+ x( S* E    void push(Object object);
    4 C" |5 j$ e' [6 N$ V, d% u* ^6 P) H+ v* _& J' K
        /**8 Z4 B3 m- u! D  @* H' S
         * 出队, H' b; G/ b. ]/ u" j' i
         * @return 出栈元素9 ^/ U4 Q& U" y8 D/ P, a# s
         */
    3 J. ^% W, C5 W! e' j$ a* ^    Object pull();
    / h! l* v$ z( T5 k
    % c4 _0 d$ n0 H6 Q* B7 W2 _2 ~$ K$ N( Z    /**
    ; k, h, }' T9 Q' e0 N$ `5 t$ F/ X: x     *  获取元素个数
    1 v3 I* G% |. o' V     * @return 元素个数; c3 F. y: X9 o6 |# `" J$ o
         */
    0 r' _' e3 U; K5 g0 G    int getElementCount();
    , l( U0 T( m- H: k5 W
      ^& a; `! U* s+ u" X7 t    /**
    + [! L2 c6 n4 x     *  获取队头元素
    ( O* R5 m% e% ]2 {5 G3 z     * @return 队头元素  l" R6 v/ J) p, J1 X8 F5 b) I! E
         */
    / c' v- G0 |1 |    Object getFront();
    . ?, L  |$ W; P  Q" v* O. S0 ~3 x. e: t" K  s1 n
        /**/ g! `# {" Q2 @$ P
         *  获取队尾元素1 Y, F4 f; [5 |$ p1 t
         * @return 队尾元素
    8 ]9 p* x) P! l4 t  x/ T; a     */
    5 O& a8 O$ M5 c    Object getRear();
    # P2 ]; @8 {8 M6 K3 H9 T  j$ w% [
    * ~# d+ \+ M2 M; L% i; v- Z* s    /**8 f$ {: Z1 O. c3 E8 t
         * 遍历队列的元素
      }- V7 M) W4 y4 y. c" P     */! d! j! ]2 s' e& h
        void traverse();6 P: d9 o4 K4 ^( r
    }
    $ p: W0 [" G6 q* u3 G7 t  n% O2、队列的接口实现
    ; j3 ]  Z. ^. H! }8 P& _8 A/**
    4 V6 w5 B, B* c * 队列的接口实现
    - B3 M' Y. |  d# Y1 W *
    ! z4 Z8 L# s" P7 N( o1 I  o * @author zhuhuix
    . Y3 }  z* w3 N1 J6 T * @date 2020-05-010 \* {" ^: u! A" U- S9 p9 m
    */$ V  F( T/ [, C4 Z$ v
    public class QueueImpl implements Queue {; M+ k6 R4 {  g! P- M  b2 r! u

    ' j) T3 O' J# A8 {    protected Object[] element;
    5 f% {5 H" H! M1 n6 w" k- x' l5 V/ o) r, F0 \
        protected int elementCount;
    4 L2 H3 f+ |: r% I$ P5 d0 m1 S  _, M; y1 `0 E
        //队头& F: U2 A8 I4 e; d0 n; A6 R. x4 T: {
        private int front;- H. u, l7 G. c/ I" G  Q. v1 @( H
    ' @4 g5 I3 t' v) E4 K5 G- n
        //队尾
    3 N* J& Z8 X- G' _& [    private int rear;
    , b2 ^3 h( \3 X  x! I6 e% S
    # o+ ]+ D& k9 ]0 s) B+ Y" ?    private int defaultSize = 16;. d! h6 C4 H; l

    , b' q2 f, n' V) [: I    private int maxSize;) _. S% Q9 A( W" \2 u! c
    4 V% \( B$ T0 `8 E
        QueueImpl() {
      E: S. j) t" s) f6 ^        element = new Object[defaultSize];. f) m2 ?( B$ y5 b
            maxSize = defaultSize;
    # Y' B5 z! n( I' z        front = 0;# C' d/ Y: M9 g( _3 w
            rear = -1;5 ?# `, Z) N! r$ b: d
        }) [1 [6 T0 m1 X
    , m8 ?3 @9 }' s& n# S) T- ]9 A
        QueueImpl(int size) {+ n* v7 H0 Z4 v0 }8 H- c+ ]
            element = new Object[size];* D' }6 T. a+ X0 Z2 G
            maxSize = size;
    0 l8 z5 R7 G/ `+ n* `        front = 0;
    0 L5 [7 l* d" |" ~' X; I        rear = -1;
    4 [7 h6 \. F3 o4 n: \    }
    % e* V' G) q1 |- @. m
    / \( K) d* C" ^    @Override3 ^* Z9 \7 L0 R
        public int getMaxSize() {
    9 K- n& L: W* o7 o" g4 G* Y        return maxSize;; R) m4 \% f, \, H
        }# g0 u( b" h! z1 d4 k

    : Z5 g+ u" m2 N    @Override
    % X7 n9 g: }: Q* R    public void push(Object object) {; [" i! @- _4 B- e
            //如果元素个数已经达到数组的最大个数,则进行扩容
    & ^, W) L  B2 t" o6 Z# x        if (elementCount == maxSize) {- ?0 \' ?8 d: N9 x0 S# _2 }
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");9 \2 A5 q8 \  o( Z
            }
    ; V" o* M" O5 D6 B0 l) [        element[++rear] = object;
    ! \, j% t* e  W7 Q' |) X        if (rear == element.length) {% H# \1 u. v7 C) s! E
                rear = -1;2 M) z2 V' G% a8 K* }& @; y4 T) r
            }  _) G& V% }# X3 `3 T
            elementCount++;
    * U( J, Y! j0 \1 c+ j  x    }& _  R! {+ R+ N$ w3 t$ d$ _
    8 O3 U( d+ D  Y
        @Override
    ; D4 p. z. R- ^  w/ U    public Object pull() {
    9 f( F6 p3 n: E+ ?  q* Q7 p        if (elementCount == 0) {
    $ q+ e8 X! E3 l9 O8 E# o4 ?            throw new ArrayIndexOutOfBoundsException("队列中无元素");$ g. M2 Y# q9 `: @% D: K9 e
            }
    3 o- U. _+ D  i/ B, E$ A3 L        Object object = element[front];
    0 D; O  v- b2 k        element[front] = null;
    % f4 i4 }( I! U- P6 U; X% Y        front++;' ^. N* M7 B3 W
            elementCount--;  X  l, X! C1 W6 p1 i) j
            //队列清空,队头队尾恢复初始值- r" v: u1 x3 \4 ~* F! g
            if (elementCount == 0) {
    , j/ I6 {0 H# e7 e0 V- D            front = 0;! |  C/ t+ i& b7 E. O/ _) U" O2 Q
                rear = -1;
    1 x% z3 U2 Q# X+ X% U9 W9 b        }4 q' ^/ q+ t! T7 |
            return object;
    ) x/ C& r8 o+ R0 r! r    }
    8 v+ i; P3 `5 F0 f/ P/ [1 A5 K2 |' K$ T5 T" k
        @Override! d" d3 G& ~9 a! k% a
        public int getElementCount() {
    9 p- x8 q2 [+ `' d0 W6 R# ~        return elementCount;7 s5 S" g  T1 {$ T& B  ~/ q# g. F$ U
        }, z& t# k# v7 C1 r  W+ p0 [
    % N5 ?2 K* q3 F6 d* X1 S$ W
        @Override+ g2 q/ G  S8 J* B% M
        public Object getFront() {9 J1 b9 {- b) i
            if (elementCount == 0) {* M7 L# Z* K' j
                System.out.print("队头无元素");
    6 r: i& \/ u% A) n# o; C! r            return null;9 g( K3 p1 T) b9 z) q) [+ X: [
            }3 s, K$ n  h' d. s4 H' O* ^
            return element[front];
    5 u& z. U( C' j4 t8 }    }" {) y( t5 H0 j4 S% [

    # X% T+ ~) J; F% p- o    @Override  I5 a% E5 o3 c: j- E2 `( l
        public Object getRear() {
    ! Y+ d/ q6 o  I# H6 T        if (elementCount == 0) {6 d: k# E7 d; [; p) F0 y' u! U( O
                System.out.print("队尾无元素");* r# W$ a- |4 y8 h& q' v
                return null;
      l4 W' x1 d/ h3 j        }
    ! K: V& J5 k, Q  L3 W* m* H. @7 S        return element[rear];
    + B/ A! J6 y/ n- j0 S5 u    }; g* R7 F$ ^3 E

    % L* z7 s7 P, A9 d    @Override
    $ R3 E- C! ?* W    public void traverse() {  ^, v! S! ~' u2 F0 y" O
            if (elementCount == 0) {; M3 R2 `4 p: O) a
                return;
    3 Q" d+ J2 @) ^4 }/ F        }
    ( p) A' Q1 E5 g+ G( l9 v7 [        for (int i = front; i <= rear; i++) {
    . Q6 A; W. {# H) j' j- ]' s            System.out.print(element + ",");
    ! O0 G7 e; R) y- m        }1 h- J! {# Z: e
            System.out.println();- Y* Q( v( R2 V4 ~4 }# w$ N
        }) k% d2 \4 n  a
    }
    5 o: V4 s1 k$ q2 ~; B' I( @5 W& \

    7 L6 m& y8 @; O) s$ e/ n4 g3、队列的测试
    ; ^7 X- @0 ^! L7 Y5 V- [# ipublic class QueueTest {
    * O3 Z0 t' F3 ~5 P1 N7 m- W" |    public static void main(String[] args) {
    1 ?# C3 k$ L, X3 g        Queue queue = new QueueImpl();
    $ a4 E9 B2 B# ?' R
    6 l/ V" _( c9 R' L& R        //获取队列大小( Y  B; f1 P$ s
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
      a; \' ?! `( ~. G. m1 n) H$ d6 i4 C, H
            //第一次入队列:压入1-15/ i+ v  Z2 V5 a5 W& L+ N  _/ B
            for (int i = 0; i < 16; i++) {
    - Y1 J3 M! U& ~5 T( G- |+ S            queue.push(i);
    " h  A! T( _5 W        }. N" t' M/ Z1 y0 @/ I
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());1 P* v. P6 E5 D! {% D1 A% ?
            queue.traverse();2 }2 L) E% t- @! X6 z
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ; f; c$ c6 N0 a, [! P4 N4 M, c+ o( {) u% m1 ?
            //第一次出队:取出0-15
    $ N1 J& O& x& F! U! V% J- {, c        for (int i = 0; i < 16; i++) {* ]8 b- o" q1 m1 ~0 ]/ w+ Y- Y! `
                queue.pull();3 j! q. O5 V2 Y3 ~( K$ E" V6 L
            }0 e# i: Z: `  k! U; }8 p# d+ a
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    # Y0 ^& R& z" I& Q8 x( w        queue.traverse();. e9 I: z" N! ?8 v5 X# O2 f4 ?1 z5 g
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    0 X/ ^1 f7 U8 `/ [+ V; ^
    . e! E3 y% [! ?- C9 ?8 D" w" c  g, W* t% {" J! i) }
            //第二次入队列:压入16,31
    , ?- k% V5 D+ X2 e1 D3 r1 Q6 L        for (int i = 16; i < 32; i++) {! l7 y  e, U: P
                queue.push(i);
    0 |2 j. c: U* c- e2 B        }( n) P3 E# z* U5 N
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());0 n7 I6 B! t7 ]) o4 o* o% [
            queue.traverse();6 G" e7 a* l6 j9 I
    * p2 a0 X/ u, p7 [& X3 J

    * S3 u& c% F$ A# E% d        //第二次出队:取出16-31) o* u& x6 Q7 L  |6 R
            for (int i = 0; i < 16; i++) {' K0 x6 l9 |, `& P4 u7 Y2 T, C
                queue.pull();
      ^8 v6 ]* R8 t7 L        }, {& O* F+ r" X) I
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());1 X8 |, x/ C$ o2 L
            queue.traverse();
    , a3 d( y' Z& H( d3 t) h; T: t, ~" Z; m: g) o3 I
            //空队列出队报错- O! G+ e) p( d
            queue.pull();+ Q2 k+ V6 E) ]# y
    0 y2 G: k! f: A0 {9 @2 v. K( N
        }
    / o7 p! \& H: h}2 d! w9 R8 k1 i
    # L. _1 Z4 Q2 o0 w" V
    7 Z& {3 o4 T9 A9 X; h) M) |

    6 U8 D: _8 l. h0 Q  e4 t$ X- w; G& h/ C  d, B. ]

    - ?; \" m; e& x! _/ g( q, e7 E5 N) L& u) o. v8 z' C
    5 u0 w7 I( H2 N4 o
    : O! A) X, y7 Z
    - Q3 Z. X- E8 m2 |( B. {

    9 J+ J* Y% [) N) Q$ B5 B4 g2 e" A% R2 F9 v2 @

    7 O  W1 X+ M4 i4 J# m
    . t/ t: P: e) G, [; r! ?2 {* ]) s6 b. t
    8 ~4 ~7 f" W3 |8 Q; h
    ————————————————
    3 Y8 t. {" w$ \, E版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    + j) r: z) u1 P0 ~2 r* M. C原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785& E  [: L" Q4 @) s3 ~* S3 O! w, v9 y
    , U' O5 C4 A+ R+ V( K0 U* G  u1 ~
    5 i0 k. u' o* e+ z0 S' O/ B
    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-10 00:30 , Processed in 0.518775 second(s), 54 queries .

    回顶部