QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1712|回复: 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
    ' Z+ A( i) b6 P- y
    数据结构——栈(Stack)与队列(Queue)的手写实例
    6 z( }0 u+ c$ R: [& i# y9 D# N: f
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      8 f, b3 A+ T' I8 Z5 S
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        4 w+ h; K7 y2 I/ k1 {
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          % h  m* v: Z. ]
      • 三、 用数组实现队列, V% h8 _. |2 F+ T# A7 g* F
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试. Q7 s" a; A6 U: C

    / y; o: S6 o7 R/ Y. [0 ?. B# k" E  L( m; i4 q0 l1 M
    一、 栈与队列的定义" e5 V; D/ m* e+ {
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    3 k- Y0 E# a9 F; y. W2 C% h 1.png 9 v# @! t% Q& {6 U% g6 u" j
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。7 g3 }3 s# r& R0 ?( E1 H
    2.png
    6 @- M4 i' L0 D0 N
    5 \4 F' |- A( ]5 B3 ~, I. c, g! g0 N  W) d4 }0 j2 t- L* p
    二、 用数组实现栈1、栈的接口定义
    ' l+ y. U/ V! Z& E: l8 r! m- v8 w$ c/**
    5 {0 T: K' c+ z% }2 Q1 u9 k" c * 定义栈的接口8 m, A; B( s1 v" u6 i
    *
    5 }+ u! d, {, }  l0 _7 A: W3 f * @Author zhuhuix
      c1 r) C; h% r& q; [ * @date 2020-05-01
    1 }. }: q# L1 K$ g* A- w */6 }! ]: E4 j# i( o. ~" ~4 J
    public interface Stack {# Y9 [1 z8 H& y" F6 j8 i
        /**( a$ j5 w! p  c5 Q, u4 S' G9 U
         * 入栈
    $ w) t7 }) h7 K  w$ O0 G     * @param object 入栈元素' [( w* }" w. r* q. v: B$ {
         */
    + x1 d' \/ P% r2 K    void push(Object object);  P- a; V2 ?) r  F! S3 r2 r+ Y
    * y- A1 L1 V& e4 O0 j4 f& T/ ^
        /*** v5 r& e0 \, [" d1 x: H# w
         * 出栈" T. H/ E& e' J% ?7 w# A0 [+ A
         * @return 出栈元素
    : _, O. L* V4 s2 X     */' d/ |( f* {5 e( n  G
        Object pop();& D% m. b# N  e- _, v( c) A

    7 e; @0 @9 r6 k$ g8 @    /**
    0 D- p! `  U8 X9 X' J1 A# m     *  获取元素个数
    0 v2 i, q% M. T6 I9 u+ v     * @return 元素个数% d* M4 D; o: b- Y5 a" u
         */
    + e( O4 J$ L$ h/ V4 [    int getElementCount();% h8 {( U, W" e" I4 B# ^

    - W/ f1 K. B4 n& V$ ?# m7 @$ k: ^8 Z    /**
    3 U& r, I, N* }     * 遍历栈的元素
    ! P) Z: ^: W7 ~6 f/ @/ o4 G     */- Y, D. h4 L: w/ i3 d; n* u! l
        void traverse();
    0 o& H. \( I! G6 K; Q# B. Y, W* J$ i% a- V; ~8 Q, x
    }8 N) G  C! J- T, ?
    2、栈的接口实现
    : b4 r$ i- U5 w* G  I) P% ~/**
    2 Q# n. q4 j% W- V4 B * 栈的接口实现
    ; v9 Q8 ]8 v% k( ?% a *5 p" W! }( \: {- V
    * @author zhuhuix' _+ }& q! K* o4 b! k7 j3 d
    * @date 2020-05-01
    : @& k+ J* l" V: O5 w" k */
    6 x  s( S" Y: c' q3 hpublic class StackImpl implements Stack {3 I1 v3 p& ]  V1 y
           
    & J! N7 Z( ]9 V, `4 C" X) D1 p$ _    protected Object[] element;5 F2 \- d/ D2 \  c- B! K
    + _3 }& J( m* }% w
        protected int elementCount;/ ^  h: q! n: o; B
      y" [* y$ W5 e+ t' ~
        private int defaultSize = 16;# L- K3 N% N% I

    + t7 S/ j5 O8 n9 K0 Q& o* a8 e    private int maxSize;
    8 d# V3 |1 M- }2 D; P( N& Y0 b, H2 j+ t
        StackImpl() {
    7 c5 G+ X: P4 L% T4 W        element = new Object[defaultSize];' I& i/ q4 w4 c) l1 K
            maxSize = defaultSize;
    . u7 ~5 R) f( p% D% m+ ^    }
    0 u* G& @5 |; A& e2 R* ?
    8 `" H/ |) o& Q* F    StackImpl(int size) {% R* F0 G8 G( `. w+ ~9 A
            element = new Object[size];( I" |# @& v5 M- v, l9 Y2 a
            maxSize = size;
    2 q  s% v# H  t( N3 ^  z    }7 U* m0 `! q% _9 y. A9 q8 h% \

    9 ?4 ?; s$ [, d) k6 N    @Override# _" U# L- c: {( `% X
        public void push(Object object) {7 q( P& x2 [7 a; b
            //如果元素个数已经达到数组的最大个数,则进行扩容6 l/ V2 e5 s, d& r9 D! i0 u. w
            if (elementCount == maxSize) {
    ; v+ Y+ a2 Y. T5 A0 J            element = Arrays.copyOf(element, elementCount + defaultSize);
    # V4 r% h: `( {2 h- Z; X        }
    4 P7 L+ a/ z' v: k8 N: m/ ^        element[elementCount++] = object;
    , ~+ R# d0 A* ]) a. c# Q0 D! M, y  ~( G
    5 y" }; N/ F/ [8 G    }
    4 r. o" ?1 w) U+ R5 W        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    * i$ V) f8 ~! C    @Override
    " s- L3 d$ b3 ?5 v4 c0 h    public Object pop() {
    / a5 k1 I( b) }0 A/ i1 O$ k        if (elementCount == 0) {
    6 }+ h) R6 d% p' e6 @/ O4 u$ c  R            throw new ArrayIndexOutOfBoundsException("栈中无元素");) v% T$ m1 s  w
            }) E0 {, o# o+ \# K0 u
            Object object = element[--elementCount];
    ' u& E6 S, y9 m8 G+ _* d        element[elementCount] = null;
    2 g  P) \" f6 C; i6 }" v1 z& j        return object;  d* q4 E6 k. ^' p
        }
    4 P, a* b3 ~. i# H
    + P+ z& x* |1 G% g    @Override
    # j  K' y0 ~" d/ l5 z    public int getElementCount() {
    , P7 I& r8 p9 X- [7 n9 |        return elementCount;
    6 y9 s/ G2 r0 Q+ q! [2 K4 Y& e6 _    }
    ' l6 B! h& b( o" T1 M+ n" x% {
    2 e( ]6 a$ H2 v& }) u& r. q3 Z    @Override
    9 A" [4 F( {! q) U) M" U) r    public void traverse() {- A7 e. C2 i3 `( o  J$ S5 H
            for (int i = 0; i < elementCount; i++) {' {& [- i8 z+ n2 m* ^
                System.out.print(element + ",");
    2 x% I. ?) Q  k! r- Y        }
    2 r- B3 ]' T5 f' a; W# ]        System.out.println();
    & s) h/ F) h) \! V3 h# I    }, \  L$ Q9 J) V1 k9 W! S& k
    }
    , e7 V( k; K6 I' c) v4 ?3、栈的测试, U, H1 I' z! k( ^1 \
    public class StackTest {5 H& X! o5 M3 P4 {( x. U( `# O. \& b
        public static void main(String[] args) {4 J/ X; r8 z. o/ r
            Stack stack = new StackImpl();+ W7 L- x4 Y; V+ k4 F

    * t+ W) E2 M: e0 \; r4 \) {7 K        //第一次入栈:压入1-15
    + ~$ o+ I3 p, f+ L8 o) h        for (int i = 0; i < 16; i++) {
    - m, U  @. F5 Q5 u, e7 |8 t            stack.push(i);& n  o5 A; ?! k
            }. V) g9 b7 u1 L" [; U
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());/ s, b5 \, v' Z, x1 m) j
            stack.traverse();
    * X+ _2 T3 f% b4 `$ }5 x& o
    4 O  z! V" |0 ?) O1 y5 b) C        //第二次入栈:压入16-31" u; Z. E8 E5 `9 m" T
            for (int i = 16; i < 32; i++) {, v( o; C8 Y. i* y$ b' \
                stack.push(i);
    % r6 V# _! X( J+ s0 v, l: c* S" B        }8 E# G/ P* _8 t' G. p, J& m. S( p
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());: P: u& i4 f/ n! D: `
            stack.traverse();
    8 @$ s4 ^% z& [. N" X; O0 x5 J. M0 h. z! K$ c
            //第一次出栈:取出31-16
    ' ^5 k# D. u. N0 Q, S8 ~& D# q        for (int i = 0; i < 16; i++) {# q( J: ]  u. p9 G  R$ J! g6 U
                stack.pop();$ }! P4 B1 `% J$ F; Y
            }
    9 C# w  S2 X* G: x6 \        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    6 r* P$ I1 P! [* e# R        stack.traverse();9 m0 U, g* z' x. g/ v

    ; m) b, m$ n; q: d, d9 m) S        //第二次出栈:取出15-0
    ) [& j3 ~! K8 u8 X        for (int i = 0; i < 16; i++) {
    3 ]- _1 J2 g7 H7 ~6 Y' x& _4 \( G            stack.pop();8 v8 k. n& C) x- g2 d
            }
    - K0 s$ e  _; C/ n& v        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    & \% n/ U2 w/ ]        stack.traverse();
    7 s$ Y: I, S, Q% K9 Y, `/ |: r
    8 ^0 E8 _6 u" s; Z        //栈中无元素,出栈报错
    " |$ U* T- K0 C; F: v5 N        stack.pop();
    * V& d9 F* N, e9 g* N$ k6 W1 ]" m1 H* i: r2 {
        }4 Q6 u( |% n9 x+ y7 M  a/ I
    }
    5 @: Q; Z* j; C 3.png
    , E+ `8 Z: Y( S  d! B5 H8 t& F9 ~
    * ~; U# }3 t& s1 @8 S; l, N+ o9 E+ K  u' P
    ( Q) \& L$ A. L" p; d1 ~5 f, ^
    三、 用数组实现队列1、队列的接口定义
    ' v0 s! f9 Q# J- K/**
    7 ~3 ~' K7 D* z8 \% p9 j% l5 G+ B * 定义队列的接口7 s7 H9 [' P0 e; o( t1 ^( i* ], k
    *
    : t8 ^  u, D& h$ g * @author zhuhuix$ J8 t: Y/ a3 L7 \! I
    * @date 2020-05-016 Y/ r5 u9 G7 P" }
    */
      J2 ]7 D) |  J' K) ~$ m8 U7 Ipublic interface Queue {5 [% j( x* c: W
    & k4 ^/ ?) L1 D1 r  c/ N' f  G
        /**" g; k6 G" `: y
         * 获取队列大小4 G2 b) k9 @) `+ T  g- y+ j4 t% f9 s
         * @return 队列大小" d7 F. R; G3 c
         */
    1 @- \$ P. z+ v$ o- y4 G1 o    int getMaxSize();2 j" s3 @0 y7 e9 L: K% B
    % e* b* D/ t, }& J
        /**
    " r% P& i' c" I* t3 K& d0 g" i' ?     * 入队! E3 o1 v5 k& h% r+ y! e
         * @param object 入队元素% p- q5 G6 @. ?5 t
         */- }4 G5 f& q$ F% o! a8 H( h. ^
        void push(Object object);
    ' v! ^% G2 g& O* m9 @. p
    " \9 S. a; Z/ K8 Y7 T# a    /**, e9 ?& F8 |; Q, g) `4 j
         * 出队
    , D2 P+ y2 o8 g# O4 Q3 w; b     * @return 出栈元素
    1 i9 ]5 Y, w) b' g- v' a5 u     */
    0 c1 e6 w9 @5 R5 d0 P( B    Object pull();- E/ |0 v8 p2 n

      v) V; s  x- b: {. v9 g/ C. U    /**5 ^8 f3 d0 d* Q. `* t% t, Z
         *  获取元素个数' {) q2 Q2 b0 |% k
         * @return 元素个数
    4 V- N; Z8 ~3 \8 [# J     */
    5 O# L+ l, C! t+ ~! D9 ]9 G( ]    int getElementCount();
    # G1 R- y$ I5 V5 W& H1 ?7 o
    5 u$ L. z( l( i  Z/ S7 z    /**
    9 r! c/ O9 L, e     *  获取队头元素0 e3 r7 a$ W0 L$ Y
         * @return 队头元素
    1 e" b3 ^+ c0 v. w+ s     */
    ) j1 Q5 n- ]% }    Object getFront();% I* s8 y& ]6 ^2 B0 r# f, u

    * R! o- ]+ q5 t    /**- B7 o. w' z- J7 z1 y0 N% P
         *  获取队尾元素
    ! o2 \. @4 W. X) b     * @return 队尾元素( Y0 }0 C. ~2 w" h: c3 ]/ O, G
         */' U* `) q3 g8 L8 a5 L5 O9 R
        Object getRear();' k7 e+ V$ J& i3 W+ h- S

    8 I" T9 h: N' D    /**
    5 o/ N% u# p0 F: k: C2 S$ Z. O     * 遍历队列的元素
    * e) m# o/ T5 Q# \) s     */1 P: K6 s1 H7 J  u6 P
        void traverse();" a/ u" a5 U$ E6 f
    }# [: [1 C% n, U8 H3 |* C& {3 ~
    2、队列的接口实现
    ) v. F& J% J4 Y$ X9 \/**
    1 d2 q* |3 I* i9 q) d0 l. M * 队列的接口实现
    ! j1 u- ^& F& G! y4 ^; P5 Y8 t  H *
    7 T2 ~/ {) g- J  f8 e * @author zhuhuix
    ) K7 @, |2 s' H# S0 u/ B* J8 Z * @date 2020-05-017 e" i/ x5 E- R, Z7 j( L; y8 G
    */" ]( O2 Q, e' I1 t9 b' D5 k
    public class QueueImpl implements Queue {1 v1 x! V/ k3 ~+ m% e$ c  q

    6 N: u# a% `: F: c    protected Object[] element;
      f& V1 ?; g9 e2 j& v! b' w( j1 z9 s
        protected int elementCount;2 l: b; j( R) w4 Y9 |
    , ?5 k; v* Q: P2 v: m
        //队头
    $ r5 T3 q6 j( h( L& b3 z    private int front;
    9 j- I! k7 L3 `7 `4 h; [. Y/ V1 a- I: C! v, T; z4 G- d0 {
        //队尾
    8 Y4 H; ^8 h. O6 P$ {9 U    private int rear;1 c0 G6 ~1 X: l% g+ O
    0 h; g" `9 a- K, O
        private int defaultSize = 16;( |) v4 y9 H/ Q- ^( Q  T

    / i+ k  l3 y& K. H/ b' J& g    private int maxSize;2 o. y. o2 x3 Z

    - O7 k# c8 D8 J  b7 r6 ?7 L  _: J! Q    QueueImpl() {
    7 D* Q, ]  \+ L( S3 V        element = new Object[defaultSize];
    . ]& l/ @( d8 I        maxSize = defaultSize;1 g" C4 v3 ]( g8 H5 t( H( P3 E
            front = 0;1 v0 c/ i) ~% |  A: c
            rear = -1;. p1 t$ m0 W! ]& {9 c
        }
    . H3 j& w" n, p6 k
    - s$ x9 p( W5 {1 ]5 _  k    QueueImpl(int size) {
    ) f1 z) x$ k7 U, g: r0 C        element = new Object[size];# A/ h- g) T3 V% C) T+ S  G# G2 f( C7 ?
            maxSize = size;
    ! K4 Q. q# ]! k1 {  x% X$ B* n        front = 0;! z1 `$ p/ h9 a, D. S2 z
            rear = -1;% V+ d0 ?+ n+ A2 a- R
        }
    / K+ u: }9 N: [, `. z
    $ B, {5 A/ `. h. }    @Override; H! H6 Z1 S% f7 j
        public int getMaxSize() {1 A: p/ f* T+ J/ v3 q
            return maxSize;2 P' x) g% F3 y. l* b
        }
    8 C5 W9 Y9 P* T$ `( C$ q4 X1 q) D5 P+ i" s! Y7 m
        @Override
    ' @' w3 F+ I# }    public void push(Object object) {
    : d4 d* d% x  r! f& y6 h        //如果元素个数已经达到数组的最大个数,则进行扩容4 `% q! R& |7 [# j& y4 d& _6 q
            if (elementCount == maxSize) {" ^3 E* I+ e& W" H0 ~
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");% Q; ^2 p- m- [4 C! Q8 z# T
            }$ P$ E# }; F4 A( n+ ]! Y- K1 X. ]
            element[++rear] = object;
    % f4 l5 M; I' R7 A* C        if (rear == element.length) {
    ! D$ T9 @* C6 \( k/ x3 S1 I) R. m            rear = -1;4 @! G& T1 M7 m& A
            }
    9 W. i3 y2 q; s0 U! U, D        elementCount++;
    0 ]; V2 O, O7 M; \: J    }" `. v, Z) c0 C! Y$ i. h) `

    ) q3 g! s  t. u4 l! Z    @Override6 @3 e$ T: G2 S0 g
        public Object pull() {
    5 D, v7 z6 q2 l! k2 c# s) _3 u: X        if (elementCount == 0) {2 R4 ^/ F! V' n6 L' ~" r" Y
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    3 D+ A  m/ b& X2 T0 N- }        }( w* [% E; A5 G- A% N! {- t0 Y" Z
            Object object = element[front];
    / K( ^) e5 l( m  j2 r4 S        element[front] = null;3 n8 A+ T; J, h2 Z( F
            front++;
    3 l1 |( z7 a& {9 k        elementCount--;
    9 S3 y% `" c5 {: l$ R9 E5 x  J        //队列清空,队头队尾恢复初始值
    ) \- F9 J1 H& `; Z        if (elementCount == 0) {
    ! `$ o; f1 f* H! {            front = 0;( o3 N  B: j& |
                rear = -1;8 t+ }1 }! f1 |5 |$ _1 w
            }
    $ O8 i$ o6 z  d        return object;
    * A& i9 B$ K, z! X8 d9 F8 T8 P    }  ^2 ]% K! {9 m8 E

    6 T) H5 x) |1 f    @Override# [, T7 R7 _, ?& o4 S4 l0 q  R
        public int getElementCount() {3 L$ Q- c7 I; _; m( v7 e
            return elementCount;$ l6 K; o% C- Q: `8 q* k6 j; v
        }1 t* A4 @. u; {( d3 P

    ! F/ a; ~' }7 L+ \    @Override
    + \  i( S* D8 `    public Object getFront() {
    1 D0 F, p8 o/ s' w0 [$ x        if (elementCount == 0) {
    8 J9 W8 b; ?6 |            System.out.print("队头无元素");
    9 C/ J3 {7 N; V% k$ C  Z" V            return null;
    ; @, R0 j, q: i3 D' W) ?        }) i# h9 e7 _  q1 J& j4 b1 E+ Q8 b
            return element[front];8 C' S  J! ?! t0 T
        }
    / L+ H2 o$ s& b: w% `6 a
    9 ]# D) C7 M3 z    @Override% Z3 b+ S% Q  q2 V. G, H3 ~& [
        public Object getRear() {2 J7 r5 O7 f5 _! y
            if (elementCount == 0) {6 x) |/ w2 V5 B0 ]0 `; D) _3 u
                System.out.print("队尾无元素");9 R: W6 d& y: k- c( P6 _, j1 j
                return null;. i8 x6 _/ t  [$ F2 J. c
            }
    # D5 H* U( t" K- z0 P& Q! O/ `( I        return element[rear];
    $ C, H- _) f8 D5 u% W    }
    # E; q  j9 K" v5 V
    6 a$ S  ^3 R4 u    @Override
    4 B8 g9 K) y% W* a( W    public void traverse() {& j# h) S" u  x% [
            if (elementCount == 0) {; I' a- U, Y4 x- N
                return;
    1 G- h' ~* K. \( e" \        }9 M* V. p; c6 s$ t5 f; C) _
            for (int i = front; i <= rear; i++) {
    ) H$ d! i/ h0 d            System.out.print(element + ",");
    * L) ?* q3 E/ e3 N8 ^/ ?# r        }
    * G2 }4 q! _9 k# ]        System.out.println();1 \+ S  W# }  F3 d% |
        }& p( U- a7 e9 D# I& d
    }1 a& b1 b% A# M' N4 \
    * ]! ~- j1 `% c2 \9 c% d7 L

    + l& p) D/ b$ w7 Y# ~# V3、队列的测试/ b6 E4 i# K, E( ~8 @" W* n9 _* a
    public class QueueTest {- e6 p& ~9 }) F, g
        public static void main(String[] args) {$ @+ B: q# M: X1 ^  b2 K# ?- w
            Queue queue = new QueueImpl();
    % K8 \% B5 _. ]. I1 Z
    " l  k9 E& {6 e# v+ O+ r$ V# u        //获取队列大小
    / V4 j. V2 f* I7 L: v* X; l        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    : N# B; _, y- `& ?  W: }0 R
    5 ]6 A6 M* C3 }        //第一次入队列:压入1-15. ?. s5 H  w, `$ x% u3 k
            for (int i = 0; i < 16; i++) {
    , H/ @' H# `  j* O2 i            queue.push(i);# s/ \) i" {9 u1 ~
            }
    % x7 Y8 |* U+ E        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    " J5 S4 `( ]! V% F        queue.traverse();" H6 q# z5 E) H; `& h) W6 Q9 E
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
      e5 V6 F% X" \/ j+ ~# m' d$ D' ?( _2 N
            //第一次出队:取出0-154 ]- w8 @' D$ H- @5 h6 q
            for (int i = 0; i < 16; i++) {8 B5 ~/ Q, F1 p1 e' o% e
                queue.pull();) K- V1 K0 \3 g2 j  K4 _" w' T, _
            }
    1 T$ k7 a2 Q; V& n! T7 T        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    8 g4 f1 j5 t9 ^* k+ j6 N- O        queue.traverse();3 n# C; b7 x1 A. B1 x* c4 K9 \
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());. e$ l& X; ^! y9 p

    $ R! A/ M$ p5 H  r1 E
    / _! H( p* f1 J* _' {1 H        //第二次入队列:压入16,31- y. q; r: B& j  g' z
            for (int i = 16; i < 32; i++) {
    1 a1 c& q7 z$ w8 R7 a* R  w            queue.push(i);
    # ^# B9 d1 E3 D6 y9 E/ |% `4 L- i        }: n2 x' V  ^# P2 ^" `2 k! k+ W
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    ' i# e. x0 D, B        queue.traverse();
    4 k# K5 i1 I! v3 j3 u/ X! V6 w5 e; I- |+ \3 ]1 l0 @1 p

    - B/ o" H0 m) ^1 p4 L6 @6 w, Q        //第二次出队:取出16-31
    / Y0 k  }4 f' c/ C/ b" K7 S, e        for (int i = 0; i < 16; i++) {
    ! t' {* N, E" n$ O+ B* B            queue.pull();
    ) Y2 |$ X& u; Y7 ?" X/ {        }
    * L( }5 r8 X% V$ q; D        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    * L1 l6 j# D. T# l, X' B* }        queue.traverse();3 z' v: G* g4 M( U# A0 p# A9 O" F
    , s/ o" r+ ~) g) V( ^
            //空队列出队报错
    & T: d* c4 w  s+ |% s7 J/ j) f0 Z5 \' t        queue.pull();$ ]9 q+ M' F# p5 U/ [9 S
    / C" c* f5 i( E- v( Q! U9 v
        }* V0 v, ~; Z" K2 E' t# b9 J1 z
    }5 q7 E1 K. |; D, O
    " p+ S! p/ G% [/ }% U3 ?
    * }8 }8 j8 r( U
    8 D4 J7 o" w% a- ?; m! F3 q
    5 N! T& M8 X, X5 h- o, P$ u8 d
    9 ]" L( ]4 w9 K( {

    1 [3 _+ i3 l+ ~( l( Z3 |
    6 p/ E. a; T4 e! s% p6 k
    9 f" o, f& K& r8 [. w( H+ D7 o9 @1 B, b: r1 N

    , q2 @% L0 v/ h' ]- p6 R
    1 q; b3 X- O! }5 R$ @7 [7 ~% C( f( _2 \- I, V& I, O& j
    ) m# t' h  y% _. Z
    ; A3 a3 F3 d5 F! x7 I

    # ]9 ^2 H5 e+ H6 j) U————————————————
    ( @  T. ^; E. z! _/ B  e版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。0 x% k4 }4 Q% W' R3 h
    原文链接:https://blog.csdn.net/jpgzhu/article/details/1058767858 U1 O! E- X2 {2 F* v8 Q3 _

    % a% X- `* |% o) \
    2 F  y/ o! O% `0 b4 ^$ D
    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-12 10:40 , Processed in 0.439925 second(s), 54 queries .

    回顶部