QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1050|回复: 0
打印 上一主题 下一主题

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

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

5250

主题

81

听众

16万

积分

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

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

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

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-5-3 15:29 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    & {2 \& K9 B" [( q: s
    数据结构——栈(Stack)与队列(Queue)的手写实例
    / X* @" D6 S( h5 j& h/ E0 o
    ) H! S1 N$ L. J[color=rgba(0, 0, 0, 0.74902)]文章目录
      9 e% r, k! t7 Z4 U8 P  q5 i
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        , b  U" ]  Q( F$ j% C, r* d# C, h
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试& B" T1 k: _2 C- Z2 {
      • 三、 用数组实现队列( k3 X2 `+ k  |, @5 N, S7 h
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
            a8 c" P1 }7 E) I5 F! d! |6 f

    1 u- `+ x+ P) f
    3 r* U- [" x$ R, C; J: y5 K一、 栈与队列的定义1 P0 q! a6 Y6 |+ ?% A
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    , D3 |9 Q3 ~( G' z1 k$ Y( m$ Q 1.png 0 \3 h. r0 {# K! j5 F9 _' N
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。; A5 o# U8 P. |- Z
    2.png 6 M: ?/ g: S2 O
    4 p  T& U% b- c) I# t
    % k4 n7 [1 y9 P& L8 b
    二、 用数组实现栈1、栈的接口定义& R( w% }' G3 ^  b
    /**
    ; W7 a1 ]% m4 u/ ~- c* a! ~; _ * 定义栈的接口
    1 N! {5 m! d4 H *
    2 m  z$ t2 ^5 j9 ^# W. d7 k * @Author zhuhuix
    2 t+ t4 N; k4 H; w5 P* G1 C3 {6 c* m2 X * @date 2020-05-01, i( W0 L- D# Z7 k
    */' v4 m% ]  V: E+ H+ ^
    public interface Stack {
    ! U+ A4 {0 B6 G: q/ b/ s1 V    /**6 ~  O# B" X1 A1 |" m
         * 入栈
    2 c7 [0 H$ t2 _( l$ B+ F! [2 a4 P     * @param object 入栈元素
    $ W/ Q$ z% q6 j     */+ ]$ w8 Y' V. o, K
        void push(Object object);
    7 @5 b1 S3 ~9 M' O1 J; o: ]% ]; g) [3 K) G
        /**
    5 h9 Y7 v' [0 ]5 c& g7 w0 |: f5 l     * 出栈% J5 u/ \0 K' v0 r: R0 s% f/ t
         * @return 出栈元素
    9 C, d/ x" U( P9 G5 k: Y; o8 T     */
    , w) U4 N. T8 ~3 ^! P    Object pop();' w/ N8 [0 W' ?9 `: k: N, H

    / ?8 [, \( z) |. v: |  \1 C    /**
    . C0 S1 T& n5 r8 K& C- W     *  获取元素个数
    9 f( G0 m, B0 q7 c     * @return 元素个数+ X  @  t4 t) x9 f3 V+ k  d
         */
    5 D3 w0 C$ P* H  S- q    int getElementCount();: h9 u8 H* W! Q& `/ i3 p
    1 s" D. x6 i( m$ G  {+ ~
        /**3 s7 Q/ d+ x; ?, d2 O
         * 遍历栈的元素
    5 i- k8 [' Z+ w     */
    1 @' _0 d" _& t    void traverse();& G8 s  T3 G$ E8 c8 u& |1 ~: R
    ; R$ R2 |0 _, h5 _0 P# y
    }6 ~+ Z7 T, a7 [) F9 ?5 X
    2、栈的接口实现" ]4 J5 W; |( ?) B% g* j+ U4 d
    /**5 e$ [8 E  z* {% U" A
    * 栈的接口实现
    : O( w% G. a& o& [# D1 ]! J *
    2 l/ Q+ `7 z' p+ ?: E * @author zhuhuix* I1 G; X6 v2 k+ i7 B- x
    * @date 2020-05-01% d/ q2 Y3 u5 E
    */" c) }9 ~* X& T) @- a4 |* `
    public class StackImpl implements Stack {, K6 Z' D  ~1 n/ i+ c! j7 V
           
    / V4 H, O9 J5 O( y+ j4 `    protected Object[] element;' c" s" f9 M) f+ t0 i
    3 Y5 Y6 I/ K" @- T  G. c
        protected int elementCount;( ^( `' G: A4 W; M0 G% M
    % b# o) V. l# ~" k& |! H& c
        private int defaultSize = 16;
    ; P1 f. M+ y! ~& t$ {1 T0 b( X* U
    5 S( R2 R' L& c7 t9 i  h9 ~    private int maxSize;
    ! Q0 X% F4 Z3 A
    ( _4 d4 ?# ?6 J. f    StackImpl() {0 T% X% t5 A8 E) \/ Y2 X: J) u
            element = new Object[defaultSize];
    ' ^1 I  T' ]! V6 h1 U        maxSize = defaultSize;
    2 \. d* [: [3 `    }' t6 Q  ~7 M7 Q2 G  H5 W
    ; B3 @9 P* g. H
        StackImpl(int size) {  j; v  M1 f% T: F& R
            element = new Object[size];
    * ?& E4 C7 b: q( m- h        maxSize = size;  h1 s& A" X' y# b8 R. G$ y5 E9 a3 c' E
        }0 _4 U. x& Q! W8 z& ~$ F+ g
    & z: B. A1 g0 k$ @$ |. F* k
        @Override
    $ v' Z- }. R* |" E    public void push(Object object) {
    4 q9 b6 }- O9 V% T+ ~1 f        //如果元素个数已经达到数组的最大个数,则进行扩容
    9 W0 L% k+ v) j' ~        if (elementCount == maxSize) {
    ! Q1 L5 J& [) T2 ?+ E& n" E. T: R            element = Arrays.copyOf(element, elementCount + defaultSize);3 A" ?/ ^0 z, m& W) m' E+ l
            }
    2 L) v- e  b- H2 m( |; k% n& S        element[elementCount++] = object;
    ! U5 G+ @5 g" N. v5 o5 M6 K6 ?" F3 Q0 s$ N, |2 A. I
        }
    ( u* y: p' D6 M        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    - O7 s7 M9 q/ W6 D0 `  x4 b' S+ Q    @Override, b" f' K6 [1 s
        public Object pop() {1 h) @) u& \0 h+ Z9 N
            if (elementCount == 0) {
    # h: E: n. A% d  h# H            throw new ArrayIndexOutOfBoundsException("栈中无元素");5 ^5 S% j! U& _9 d8 D
            }1 g) m" m3 ?5 b+ ?( l$ d# Y. L
            Object object = element[--elementCount];
    % L; ]/ r5 z0 o  C2 D* p3 g9 l9 f        element[elementCount] = null;
    9 v% v5 l: D1 {! `        return object;5 f, |+ ]) b, }* w0 z+ I2 A
        }
    % l9 m9 ^" v: Q4 R# {* x( Z& ?
      X2 s; Q# e9 a& j8 |    @Override
    $ x, U6 l4 l2 u! e    public int getElementCount() {
    , r/ {& Z" \1 b+ G        return elementCount;+ v- F& }- H& Y7 o, [7 t
        }! V- u. W# `4 A9 z. K" ]( N
      q4 G8 a: }3 E5 a: B) a/ W
        @Override
    ) ]/ M; i- _, d7 U; P( r    public void traverse() {8 r! E7 l3 {& p! ?' C
            for (int i = 0; i < elementCount; i++) {" b' }7 X9 x3 ^) t1 [+ g$ B& w
                System.out.print(element + ",");. i/ l/ P1 `" C& W& ?* m
            }
    0 u3 F$ o) P1 E- K/ q* s        System.out.println();
    0 `0 K' F' N- w' z- W7 O    }
    4 ]/ e) {9 E* l) ]}
    ) H1 }( H/ O, n3、栈的测试& X# z! [& e0 l/ K
    public class StackTest {
    0 r/ p2 q/ q; y9 a; x8 X  N  e    public static void main(String[] args) {8 e) P4 }1 y, }" |; e& J
            Stack stack = new StackImpl();6 c& W" [" E: P& C/ B+ X6 n2 f

    " ?% i( t2 w, p* Y        //第一次入栈:压入1-15
    3 H( D% K* s" p" F  v5 b* R        for (int i = 0; i < 16; i++) {3 l4 a7 K% Q% W; f) }# {8 e9 v! J
                stack.push(i);
    ; j( Z9 d/ z% ~8 [9 \7 |0 t        }
    3 G) ^8 ?! \, P  v        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());1 c+ C: e( {( R* b, Q. a( k
            stack.traverse();
    ) v8 K5 \7 d, K$ }* a4 z' E, h& Z3 e5 X# G. w% T
            //第二次入栈:压入16-31
    & ~( Z3 I  n, ]& j; M! {        for (int i = 16; i < 32; i++) {
    9 w' m  j5 G0 X. q: [) j/ @            stack.push(i);0 M1 _: y2 {( Z3 t- S% f! f. D
            }
    . \+ m! m) \$ ~* F+ [        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    ( F4 ?, ?# [4 N. O3 a! E        stack.traverse();0 a( K9 s3 i  f) ]

    3 ?/ |3 d- s, Q0 T8 L0 i        //第一次出栈:取出31-16
    / j+ H/ @* Q1 a        for (int i = 0; i < 16; i++) {
    - q9 E8 {0 e: U9 `' y) A$ K" u            stack.pop();/ k- R* ?3 G1 B
            }" c( @$ W( h2 y: M7 ?' Q
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ) v/ b! P  F/ T: p( F# ~        stack.traverse();
    4 I6 ^, K+ T+ z: ~, `. W9 t
    7 s( O4 f& C2 b  S! _" z        //第二次出栈:取出15-0$ y* F0 i% W- e( ^
            for (int i = 0; i < 16; i++) {
    4 ]: D: k' i4 f. i            stack.pop();
    8 {: x- ^& z* L4 b; ~( q. L        }
    ! L- P4 R# }( J* G" P        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    9 I$ z1 F% D4 \) u7 D' o        stack.traverse();
    / O* W0 d0 \2 C& M( v! d5 a
    5 G: ]' e8 Q8 y1 O        //栈中无元素,出栈报错
    4 B7 L; k, |% U2 K9 |; S( \        stack.pop();
    . e. O1 X& B5 m6 }
    8 H7 g! f# e" C1 `( g: J7 A    }$ U' Q9 M" ~! t/ ]2 @( y
    }
    # {$ s: [6 P& w0 C 3.png ' t6 c  v% S4 X$ u. B2 v

    4 A+ Q# ]: `% H7 x
      c& f% [4 H$ `: z
    9 Q6 c' K  @( b; Q9 A; P三、 用数组实现队列1、队列的接口定义( q7 S3 O3 B- F" B& O" U0 w; r8 N
    /**( ~: l! Q, l$ z. o' R) _1 _8 m
    * 定义队列的接口4 s: L3 s" L  b% u: M
    *) l& W9 Z2 w# ]4 _" \. N1 C
    * @author zhuhuix
    ( i. P& O5 q$ `2 r * @date 2020-05-01
    : F8 q) B2 `/ E+ s8 N( a2 h3 ~ */0 R' W: g8 k; R
    public interface Queue {: _! V% H. G! `! e$ v" `4 N
    & B' m4 {0 C/ u3 t: I
        /**
    0 }; M6 K$ K: r" ~     * 获取队列大小
    : X8 I- e, k' Y9 \' v" b: \; {     * @return 队列大小9 B* i* j  Y. z7 m. J9 X0 H9 M
         */+ G# F# ]+ l8 t
        int getMaxSize();$ g3 U" H6 L! l6 e6 Y# Z- t
    ' E7 S8 M; O& X% ^0 {# g
        /**: I; L6 ]0 F1 ]
         * 入队$ Z; H6 n4 D$ z5 Y9 O* D/ F# [
         * @param object 入队元素
    3 R8 d8 i) X2 i  j1 \     */
      E# x1 E* h. e/ M, h3 v+ x8 T! R; b. M    void push(Object object);
    - ]" ]8 x# F" v! e3 U2 E8 L! i: s' V: m. z
        /**& L$ c4 Q) l/ H" ^! D
         * 出队4 S& y  O; q) B
         * @return 出栈元素& `% g1 B  i, ~* E+ L! J
         */: f1 r) W* c0 @% \- q/ I# @7 _; Z
        Object pull();
    8 N7 {1 S2 h/ [* V. `0 O; R4 Z4 B4 m) P: o2 C8 n
        /**; v! {1 d5 e) Q5 o4 [# G
         *  获取元素个数
    ( g8 i8 N' F% G  `0 r     * @return 元素个数
    4 J' s+ O# _$ K5 W  m( D     */
      l& d" r; }, u    int getElementCount();; V, P% S$ W% B% W: c: z

    9 S! G; W, e0 b    /**3 e/ B5 U' n1 j* o0 p5 L$ @& a1 r1 W
         *  获取队头元素& N3 \3 W2 h4 p0 w' _! e5 ^1 i7 o
         * @return 队头元素
    ) [. ^5 N- R+ K8 ]3 h+ x/ t- l     */
    % w$ S* E/ M( L0 G( o5 o    Object getFront();
    ) D  y1 A1 D$ z7 ^9 K0 p, k6 J9 }, v6 g6 b2 |; v0 V
        /**% P* H$ }( Y& y
         *  获取队尾元素
    4 Z* x8 `) M4 P: ^     * @return 队尾元素
    + p" ]- l, C6 M8 v     */, i+ s# Q) B% \! B
        Object getRear();
    9 Z3 n6 I6 A3 [' e" I5 ~$ Z% C) U4 o+ v2 I: w# x
        /**7 H3 A% D; P  d  E% l# H' S7 Q" y
         * 遍历队列的元素& w7 y( I5 ?9 u0 f; Q, u; k
         */% W" F# K. V, I7 B1 a
        void traverse();
    , F* N' U" x* b8 L}( ]( C4 I2 q- D3 {9 s
    2、队列的接口实现( h, `, \: @, E) i9 M. {7 c: r3 A0 z
    /**
    2 z) ^# O. W8 }5 D: D0 m" q' E% s * 队列的接口实现
    * b# R" ?/ T+ B2 H$ C7 @ *
    ( D9 e: P- t! v0 V7 z0 `% J6 F% n * @author zhuhuix
    " z7 a" y, H) k. e5 Q * @date 2020-05-01# x, s6 b' g6 C  d, g
    */
    $ j5 h7 |) P' O3 E* d7 Gpublic class QueueImpl implements Queue {
    3 Z' f2 c6 F$ [5 }
    # t  T# b6 E, g0 R    protected Object[] element;
    8 B! @/ N( @5 `$ b0 p' X& l
      P; b6 w  \9 M6 d    protected int elementCount;% w5 B$ E% e; i  a$ A% B" q$ \

    2 J$ ]* ~- y. C) w    //队头
    4 b& z) B. [) l: p& S5 v( Q    private int front;9 l2 [0 B1 J4 ^+ a( H5 c2 C. T' m

    + z  o; c1 d* L( k: ~, S* Z    //队尾
    : R$ D! t9 k3 e% S4 ?    private int rear;# N( Z( j! i2 o4 X

    / S+ ^+ ~# I. N& ~    private int defaultSize = 16;' J; m  p- ]) ]
    $ u( Z1 D/ N  i  ]" [/ x+ T" F
        private int maxSize;( s$ c+ J6 o. m4 T7 Z; V: b! A

    0 ?" O: @' S, q2 x$ v    QueueImpl() {
    " `: U8 j: J% d. I* r( @9 n        element = new Object[defaultSize];( y, S+ @$ b' P( g) d
            maxSize = defaultSize;
    $ }- L9 O% `' N        front = 0;; l( C& a! P4 k# N+ P
            rear = -1;
    ; Y4 v/ W' v& S1 S& h1 W& s    }4 W7 ~7 z) [6 I0 r

    ( W6 |- b+ J% G6 x2 c    QueueImpl(int size) {. Z6 ?1 B0 ?, N0 P2 {* r! ]8 \" D
            element = new Object[size];
    1 d! {  h: u3 _7 G+ `8 r3 |        maxSize = size;
    + O2 c/ y2 n! N4 {! d        front = 0;$ \9 }$ D' w9 u6 \0 z- e$ C6 {  X
            rear = -1;. Z3 v3 C' y" E0 k- Z: W
        }
    , ?! {6 T1 G  z7 A5 {; A0 Q. H# L+ @  h' [' I: L
        @Override
    * ^4 R% P9 q3 T+ C" Q: q    public int getMaxSize() {
    3 Q! Y/ u: l* }        return maxSize;; c* \! J  i3 l) z! I  F7 R; {
        }) z5 C) \$ W# e+ D

    8 [5 M. \4 Q7 k* k    @Override
    . [8 g2 U& W1 x% @6 A/ G    public void push(Object object) {
    8 I" \! s" G( {+ }        //如果元素个数已经达到数组的最大个数,则进行扩容  I# a, f+ P8 y
            if (elementCount == maxSize) {
    - I$ R; m5 D4 e; W9 B            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    8 M  n: }1 J. Y        }
    : H, }0 M' |) t' d: a/ D        element[++rear] = object;6 q% Y6 W' I" z
            if (rear == element.length) {) W$ v* j/ T4 d% b
                rear = -1;
    ' v) h+ |1 e+ U% f8 o; s        }6 q0 b# B: Q% S1 |
            elementCount++;
    9 B  i5 B. A1 m7 v: z    }9 N6 C# @8 h1 Z& n

    8 Y6 D( V4 l( s& A& h    @Override
    - f& p# B* j5 K& J: |3 w    public Object pull() {% E3 N7 s2 Z9 T9 Q
            if (elementCount == 0) {; }1 \& A4 R7 Z+ o9 _
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    , T. V, h0 |! ]( F        }, {6 u, b1 u# R" p. `
            Object object = element[front];
    ; |0 n  @7 \9 |3 a0 C        element[front] = null;
      b' h" X! W" }7 {+ R! g( U% I( t6 U        front++;' y( ^4 i; s5 |( l3 R2 o* p
            elementCount--;
    / D" W! t) R8 P# a( v: j/ Q  l        //队列清空,队头队尾恢复初始值1 {& T2 |3 s2 u0 y  c
            if (elementCount == 0) {
    ' B. W3 _. C' b. g. ~            front = 0;
    - `- H2 P. m, z            rear = -1;
    + b; N* n: Y  u( b1 F( l% Z        }6 ~1 x) h  [6 D, t. `3 ^
            return object;( a  w1 H6 ^4 s0 I
        }( O# |# K5 B: n+ Z% n. Z! z+ K

    $ c2 Z2 Z* K$ H( m9 |  u    @Override9 W2 M2 G* u3 a6 A1 x
        public int getElementCount() {
    7 d- ^9 K7 ?0 V8 m3 J! x9 U7 j7 ?        return elementCount;
    7 C7 K3 A5 C# C) Z) m) K2 W) J    }
    ( a4 |  C0 P7 p0 ~* b. E. O, X' [6 \% S: b% p& J
        @Override
    * R6 f7 [  y+ \. F$ ~    public Object getFront() {. A" i0 A* a. H7 Y' P
            if (elementCount == 0) {
    2 t9 k, S1 ^* T" {9 ~# O6 P5 N            System.out.print("队头无元素");" V5 b# }3 ^8 \3 d$ X4 V
                return null;( z% J, Q7 n( x1 H1 J+ w
            }: b. r9 v6 k2 |, e1 t
            return element[front];+ s: W( m$ F7 i
        }
    7 p$ k- ]" r5 b0 j; y4 V8 ?  Q  c& |; e* ^7 Q9 I) H6 \
        @Override8 }4 W# ~+ ]; X
        public Object getRear() {7 T! [3 m4 e' T& P8 n( m7 W
            if (elementCount == 0) {
    ( C- C6 u, g  `6 w0 Y2 k$ d$ y            System.out.print("队尾无元素");
    * `: j1 ]4 @* v& O+ L: t            return null;0 ]. O$ B& t0 \$ R% y( c, \
            }8 S) H3 z" M- d( v) S& Q
            return element[rear];
    1 U) ?  q" S+ R/ k" V; K/ i. r    }
    " `. H* n5 K9 O5 h
      O- O" M3 w4 P% R2 y1 ~1 e    @Override* R7 y* ?/ M2 j$ \" [/ c& g
        public void traverse() {
    - ?2 x  Q% V0 D1 m6 D        if (elementCount == 0) {
    ! ?' R" n# v1 v2 P/ l            return;' Z7 C# w( j% n2 Y$ p; n. K% `
            }" C+ D! J9 n) X1 T# p: R0 f
            for (int i = front; i <= rear; i++) {
      A3 G5 N! T/ q4 U            System.out.print(element + ",");; A" K- l- {4 y0 t9 a+ S
            }
    , R( t0 _  l% B0 }6 Y( E        System.out.println();. t) @' H9 C. q( f2 T
        }
    8 E0 Z5 A  }8 A9 Y( U}# m( {+ u* l0 ?- o8 b0 E

    8 X- \3 k5 P3 n0 ?- E4 d/ c3 ~) N; G* ~- Q0 W5 Y
    3、队列的测试; ?$ a4 c$ [& T4 e
    public class QueueTest {7 W# k' Y6 X( {  L  j1 t
        public static void main(String[] args) {
    6 o. b. \. j2 K$ Y( _, C: \        Queue queue = new QueueImpl();
    0 h( W5 R( }. c( H) k* g* n" D  F1 Z$ n- ~( P7 E
            //获取队列大小
    & ^; n1 w& e4 q        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());/ k/ v7 d7 Z! Q% X3 I% m' x

    : J2 E, A9 c$ W  w. J& r1 w        //第一次入队列:压入1-15/ ^6 [; Q7 v( h, A5 @2 o; P
            for (int i = 0; i < 16; i++) {2 Y! Q" e( {5 y5 Q& W# a
                queue.push(i);- ]- k! b/ q8 j" O( f3 b
            }6 ~( O: {5 M9 I0 p, T& i
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    ( E% ~$ e! ^. o1 v+ C9 {        queue.traverse();+ `, V7 ^  P/ z
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    7 \+ F% G$ @  c: v' R9 _$ Z& j8 @% U% x, I9 ^4 G2 d- W! J  n& x
            //第一次出队:取出0-15
    ( j4 _7 v! _" h0 u$ e- G1 \4 C        for (int i = 0; i < 16; i++) {
    / v  ^0 U9 w$ B6 d% a            queue.pull();
    * o0 K" W; t8 Q" J        }
    / z; ^: |& W( {6 q; [4 i        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    5 \: u3 B" z; [2 z6 w$ }. Z) u        queue.traverse();/ j( J2 {& V! b7 o
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());! R( A/ _9 q+ }3 \: z& W

    % v7 g& |1 c( ^" T' ]+ _% g# o0 H& k3 D0 o% B2 v% J, g. y
            //第二次入队列:压入16,312 A; e1 W8 k) Z: X: e
            for (int i = 16; i < 32; i++) {, R7 E& q6 i8 r- B+ i' @$ L
                queue.push(i);
    0 p0 A8 H4 t4 S" K        }
    3 L' h7 `8 B1 y1 `        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());/ D, R/ G" r& u2 Z
            queue.traverse();5 j" S1 {3 I" M! U4 a5 j8 `

    : y. m# P; V& W: ]8 g0 G
    / v& W) {- W- Y0 f  h, a5 b4 z        //第二次出队:取出16-31
    + s/ t. ^5 h3 j% f7 J  p        for (int i = 0; i < 16; i++) {) q- M0 W" C: s) L3 K$ P
                queue.pull();
    $ A+ f4 M9 X1 [3 s4 ?9 C- p        }
    $ L6 W+ ~7 T- S- s2 N3 Z0 ~        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    : L) u) v1 [7 c. l. s/ k" W        queue.traverse();
    , S9 p7 Q1 b9 y0 T! O
    & B1 A0 t2 f% d" @1 T1 R5 M5 [        //空队列出队报错
    $ ~- T$ E1 o5 ^7 y$ l; p  d        queue.pull();
    , \5 `4 c# T1 \% @) H9 u) H6 U: L8 R. ~' j. n2 U7 A5 h! e7 i5 i
        }
    ! K! S* j# `6 D}
    5 w) j9 O9 ~1 L% n0 I0 Z
      t8 l) G/ M5 ]6 C3 S, P( U, D
    . _1 [4 K7 \6 D; I/ k: N9 x. _9 F( `: p9 h  t- L
    % {) W- }9 C0 X# i

    + `: A- F( @4 j* r- V' z4 @
    8 n1 s( Y# P. u. ?  s0 D9 [0 K
    9 T# Y2 k# b9 g- k: W! L1 W. Y& j) }! S: R( P: G1 w" @

    , N& S5 v" O# F4 L' j
    ! F1 N! A! s) ^; B: F! h$ c
    4 M1 {) E2 \! E6 K9 l. [2 P$ `+ o
    0 U& [( W$ w) B( F5 k! F  T
    * i7 i2 @' x: u* y* \# r+ f; `
    1 H& e; M7 Y% d6 z3 \7 k% S- O! {  l( ~- d' f9 Z* ^
    ————————————————
    2 f2 r% ]! a8 m( d0 B4 ^版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    4 A$ l! }8 T5 W% q6 B原文链接:https://blog.csdn.net/jpgzhu/article/details/1058767850 g4 I: @% K6 M2 Y& C
    ; s5 v% U4 K: n* O* @

    6 f& u# q9 [, r8 j/ t' r* ?3 ~9 m: T
    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, 2024-4-26 03:43 , Processed in 0.367513 second(s), 53 queries .

    回顶部