QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1684|回复: 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
    + i- Z5 O! L* P
    数据结构——栈(Stack)与队列(Queue)的手写实例
    5 C2 q! i: @; u6 J' {5 q1 L
    ' t* b+ q1 t% L' X, I% x[color=rgba(0, 0, 0, 0.74902)]文章目录
      7 W* ?, r' [' n0 R) A+ t7 w
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        # H$ G" f$ g8 {( y
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          ) }. w& _% D  @( M9 X0 P
      • 三、 用数组实现队列
        0 X$ F: C, W; Y+ ~, X$ u6 G
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          : j5 B1 `4 u. c* |$ `6 l- M
    % F3 Z% V3 j+ q/ u% N/ \, f, y

    3 p/ ]7 }8 X7 w' K, @一、 栈与队列的定义& j) D/ M3 q0 w0 P5 x, u; R* s% R% S
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    0 C/ ]' @; j( \ 1.png 4 ~/ x/ F1 n1 _3 [, V$ c, L
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    % _3 H1 l( K6 ?6 E+ C4 q& w/ D" o. o 2.png ' M& Y" L" n& G9 H

    , k9 P0 i. J/ l6 n* |$ T+ Y) H8 L4 X3 K
    二、 用数组实现栈1、栈的接口定义; t/ o6 \0 J& R& W: ?- G" n
    /**
    8 c1 b  r( X" W. L * 定义栈的接口, }# R+ b, |, |: b' R- l
    *; o4 g$ I* n+ M! v& b/ V6 @
    * @Author zhuhuix, x( |3 c( c" s0 g
    * @date 2020-05-014 ~, j, x/ D% A  M
    */
    $ E  q$ `7 ?2 y+ N: t8 jpublic interface Stack {
    , \4 `) M' S5 X4 e8 W, q4 C( E  u9 w( U    /**% }& X0 L* j5 T! @5 ]8 }8 r# n
         * 入栈- s( D7 k0 C* }
         * @param object 入栈元素
    . d4 z/ R$ q! l7 Q9 j     */# K9 i& W5 {8 X1 i, W6 J
        void push(Object object);
    ! M! H0 n6 J3 p! O3 s3 k
    % B1 t% B1 h8 B    /**2 M2 f2 I& t; s0 C$ O6 J4 X1 r- H1 ?/ K
         * 出栈
    / _3 {# A* L% I+ C% K* T     * @return 出栈元素
    2 ~2 y8 ^2 B" |( G1 _     */
    0 I: `* F/ {: L+ K; y    Object pop();
    ; C/ Q7 K4 G" N$ h( B* |, }0 U) V
    9 U; r% j# z- a3 J& K* A. S    /**  Q' Z! N* Q5 b2 I6 x
         *  获取元素个数' j; _  H  ]  Z$ l0 U
         * @return 元素个数
    2 Z* Y$ f1 R' G& Z+ B& p     */- \" v+ ?2 o# }4 z
        int getElementCount();( K. N& Q3 d7 n9 [7 W& \6 }
    / J& ]& y) p1 d/ @) s) P
        /**
    0 L0 R1 P% N0 }: m: a4 h     * 遍历栈的元素: Q' F9 J( K7 u( p
         */
    - R5 c# c0 T& |5 g/ s9 v    void traverse();* ]7 M+ ]- _1 B' z7 S

    / h3 V# Q) |6 P}4 e; q' B: B9 a, p
    2、栈的接口实现
    % g6 M2 d, `8 I. E/**
    " {$ m- U' i  q, v- c0 n * 栈的接口实现1 b" O/ ~  f. M2 t
    *
    " k( X$ }; i3 \3 A& g6 ? * @author zhuhuix
    ! f% L" V. |9 M2 E * @date 2020-05-01, e8 s. M. e% D, c
    */% `; @& ]* O$ m* a7 |3 W; K
    public class StackImpl implements Stack {) y& P+ E" n9 j& ]5 g* k
           
    0 K( R0 o$ N3 r8 [    protected Object[] element;8 v. O( K, m) T, N  r( k8 |
    8 L7 \2 ?6 L/ e
        protected int elementCount;/ c/ E8 o# x5 O& K1 C/ m$ w% Q
    % K) [9 |' P6 Q- V+ F
        private int defaultSize = 16;+ X* s1 ~) O! ~2 J0 T) M

    / y  k8 q6 M: G8 ]9 t" ]' b+ E    private int maxSize;
    . l$ s% U. H; F2 z2 C  O! i  R" {( n- C# z7 S: z: J7 ^+ F
        StackImpl() {/ q4 U" M3 u5 J9 c; ]4 l
            element = new Object[defaultSize];: ~2 A. P3 [: N* _7 d
            maxSize = defaultSize;
    " y" d) Y+ B* u3 x% d4 O    }
    % r% M8 ~  `! I
    2 N' I9 B+ d+ J6 Q9 \; {( `    StackImpl(int size) {
    ( ~9 p. v- J5 `# ]        element = new Object[size];0 _! }3 K8 z* J$ w% x
            maxSize = size;  M; L5 n% }2 t4 D+ S9 ^: j
        }
    ; o. ?  w. a8 r$ X
    # F0 ^' ^& S/ J; f7 Z; R. v    @Override: q( \4 ]$ `) J9 v' c( e9 p
        public void push(Object object) {
    + z! N5 m: @+ @  P6 W. `: C/ V        //如果元素个数已经达到数组的最大个数,则进行扩容
    4 `- _$ H/ O- o5 D, f. x! C        if (elementCount == maxSize) {
    - ?% A5 [' R7 {4 l            element = Arrays.copyOf(element, elementCount + defaultSize);( ]1 Y, D7 N& d: [% Y3 a8 f
            }+ U4 j# V4 V! ^
            element[elementCount++] = object;
    4 X; \4 `- g$ b" o; f6 H2 \  B* Y2 u& I* S( @& P8 F
        }
    1 ~: ^5 a9 f: C# W% s        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    " V" Z. a2 x2 `" s9 ~6 `4 x- @    @Override/ v+ K* [; s% X% C" L2 c2 c
        public Object pop() {
    7 [( z, V6 H' h" F        if (elementCount == 0) {4 e) g% ^/ `* C2 ^5 o1 q9 ^, Q
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    0 V% s1 H: J  \: v8 W3 v9 o% e        }
    9 I- {/ o, }! `) u1 E- W1 f! B4 x        Object object = element[--elementCount];2 X$ \+ S0 R: n- X
            element[elementCount] = null;, f/ j& I* p/ r/ |0 {, f2 d
            return object;2 O& z! x  I, X
        }
    : Z3 |- F. m2 }9 A2 j
    % D. Z3 M* P; j    @Override
    . k. p" E1 }2 C. }1 t. N    public int getElementCount() {
    6 B" `# E9 q3 {% _        return elementCount;
    7 O8 C( H, b& }5 Q- e# H2 I    }6 _; A4 y! K& C1 S
    ) B( f. O  O+ w5 D% A1 p" u
        @Override- z6 y/ O5 X7 Q- J. t; e
        public void traverse() {. e4 g2 Q) z! p1 }
            for (int i = 0; i < elementCount; i++) {
    % e' o) W6 s5 m% H( j9 Z            System.out.print(element + ",");& d/ k1 H" _6 ~  g3 r2 @
            }1 s: Y- H! ^. A% M
            System.out.println();
    + h8 f7 P. z# i3 X3 \" D/ }    }+ ]# f- e  f: C! }/ j
    }2 r2 S8 D8 V& M1 f  t6 x7 V
    3、栈的测试
    1 j1 a) w/ E/ F4 S# Q& Tpublic class StackTest {
    , Z: n. B* C1 f    public static void main(String[] args) {
    7 |3 @, W# k- O2 E% S        Stack stack = new StackImpl();
    4 f( \/ Q+ F5 S$ F5 L1 y9 j0 S3 k4 _1 l7 J; ?3 N
            //第一次入栈:压入1-158 f- Q& P7 y$ X1 s9 e
            for (int i = 0; i < 16; i++) {
    - O8 w& x' J. L' X; n            stack.push(i);1 D. C/ h% J) V4 i$ r( K
            }! E) {3 q4 I4 U. S( R
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    % C0 r9 L; T% B1 t5 c6 J4 X        stack.traverse();
    6 c: W  H- z8 r
    3 c( o- F- U4 B        //第二次入栈:压入16-31% n# H1 K  Z. P1 z  S: g% n
            for (int i = 16; i < 32; i++) {( O2 H( W0 Q! @: ^, T1 i. b
                stack.push(i);
    " N$ A7 M3 Z% V  ~        }
    ( a* Z$ |+ \( j. a& h5 I7 l        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    ( |2 F9 T0 s, i7 D        stack.traverse();: O6 `9 L+ v1 N$ s/ _% s
      i; {1 Z7 x  L! l$ I1 E+ s
            //第一次出栈:取出31-16
    % @9 J4 }* \2 b: V- \        for (int i = 0; i < 16; i++) {+ P  h% A4 y8 u& \4 F# Q
                stack.pop();& T$ x$ P* C% s; x
            }
    ; l4 ]9 E, s6 W$ l) ?        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    / D! y& u; t, `, d* s! M% ], x8 K& Y        stack.traverse();. C3 X! s+ R0 Y& o
    " P. \3 z8 M) B
            //第二次出栈:取出15-0# W  A" X1 j3 e
            for (int i = 0; i < 16; i++) {
    2 Z% O  V6 h" p$ T8 I            stack.pop();  T( B# |# e7 ?6 N; v
            }
    $ K( M. r- `7 Y        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    / a) U( y! ]% b5 G7 S% X        stack.traverse();
      V/ t) u: k1 [! U/ f/ I# ?4 @7 T, m6 B; `. o: m5 l. F
            //栈中无元素,出栈报错
    1 w' ^/ z5 x0 V2 i        stack.pop();
    ( ?( Z' H( s- [- w" y$ ]% }
    8 U' O2 |- P( Y4 E) @    }2 E; [; y4 C2 b4 @  p
    }" P1 }3 Y, E& j' [; g9 P( q
    3.png
    * Y  G7 ^1 c4 ]+ |2 A" E7 x* i3 r7 ?  {- e- \4 x7 y
    / @$ U. l" ]8 p; }# W# x1 i0 z

    - o) M2 W( ?) t7 E4 h8 w三、 用数组实现队列1、队列的接口定义
    8 a& r+ Y6 Y! ]  n+ d) ^4 @# a$ f/**
    9 K% K% M. c" X+ Q/ D+ k4 k( Y * 定义队列的接口
    5 Q8 k2 i8 e: A# T; A1 `! d *, D8 [4 O! X+ P/ J4 ]
    * @author zhuhuix
    9 \( B! _  ?# L) a  U( G* S2 G * @date 2020-05-01
    ; W9 [9 `7 ]/ c" n4 R */
    3 t: e: ~! {* c! N, Jpublic interface Queue {
    - \# f& j3 A) t: b
    * q( v" l9 {/ k! @/ X    /**2 s" i2 O  X! r+ j) K3 g
         * 获取队列大小
      Q/ B) I, ~+ b  T% t     * @return 队列大小2 E: {% o; B. c2 _2 J
         */! v7 D6 y3 ?& Z  ]% D0 I$ p; @8 _
        int getMaxSize();$ `" Z1 _( t  ^# K* H$ {$ L
    + z+ O; z- I8 Q/ z+ o) T
        /**
    + f! `2 J3 B$ b2 v     * 入队$ g7 {4 {3 ]7 I
         * @param object 入队元素9 j5 O; C1 x* M; p  }7 [9 T9 b8 u
         */* t" ~" ^0 u$ y- ^5 s' x
        void push(Object object);
    4 t1 a, B* C5 G, T" {# s4 d1 U0 ^) ^1 Y1 e2 w5 {
        /**
    / W& s  f2 ]3 ^  ?8 P1 x: g     * 出队6 v( E, p2 n, ?8 J
         * @return 出栈元素! Z: Y, O$ ]1 X: P6 u
         */
    ) l3 e* h! D$ U! {0 p    Object pull();& M( L- M! W3 ?2 S, ~

    . F7 M/ b9 O% M+ k2 f    /**, m7 L$ d8 H. c# K, }
         *  获取元素个数- _2 q& T5 D5 i0 r
         * @return 元素个数
    - d% Z2 b! w+ x& g6 n' W     */
    $ }" x( R# ^; \; Y- v6 j6 K    int getElementCount();& Q5 k( D. n- v& ?3 g

    6 J  `# y2 f, {0 R    /**
    4 w* V% ?1 \$ N% _     *  获取队头元素
      v* G  X! i7 y) o$ p     * @return 队头元素4 k! p- k- R' j( A
         */0 c; z/ k, y! F) ?
        Object getFront();. L7 ~+ Q6 ^' ]- x
    * O1 m4 F+ b& H7 w
        /**
    # R  N# w1 P! y2 R     *  获取队尾元素
    # G( g) w0 m( `     * @return 队尾元素: Y% E: [& ?2 i2 s1 V6 O* a
         */
    4 B% o7 {" h1 u    Object getRear();5 m: a8 o# n- z5 `# l

    ) p4 U+ R5 }- _" u7 J( m# d' J    /**
    5 `- f; Q7 q( ?     * 遍历队列的元素( n! K6 [# D3 S. u
         */
    / F9 N7 u; ^9 R$ }! T    void traverse();
    8 V- I( B6 c6 Y/ |2 [2 d}
    ) W" [3 M8 K1 E# _1 S: y( j2、队列的接口实现
    - |" W. U  }9 n9 o  P/**
    & H/ ?; K8 R* {, A; H/ u6 _ * 队列的接口实现
    9 [3 \- F$ E3 j2 o- c; k *
    " s/ |$ z! O/ b+ l8 v) V * @author zhuhuix1 [+ j# }, p  a. E; Q* ]5 B
    * @date 2020-05-01
    : h3 p) Y4 t% t* R6 h */
    " ^; H$ ?7 k( a+ R# _2 p- ^5 cpublic class QueueImpl implements Queue {
    ( F2 P: O9 ^# {& n
    & A2 [: C* \, W, [: R3 |    protected Object[] element;2 R$ ?: v+ v8 b" V' G9 L
    , ]$ v. _) i# E0 d! I
        protected int elementCount;/ _9 m4 ]$ F: P

    4 R  @' H% N9 M8 a4 ?    //队头5 ?" s; c# u7 O* j. J
        private int front;' X7 I6 }5 z5 N% R

    / K. j7 `/ I% A    //队尾: h; v2 z  Z2 b$ W
        private int rear;
    - s5 l. c2 ]% Y% V5 D/ H
    2 H9 j$ `! ^- Z/ C$ k& E4 ]    private int defaultSize = 16;
    4 y( v; Y7 a1 F! \$ a3 d3 [* g9 d" ^7 _1 Z& K; e9 D' q1 q* s
        private int maxSize;
    " W' }# A' p2 X# f1 w, F) ]* ^7 w3 |
        QueueImpl() {) I0 h1 _5 y+ ?! @* G% [8 |
            element = new Object[defaultSize];4 s. k* _  _7 t) O' \
            maxSize = defaultSize;
    6 A6 C2 r4 ~8 a8 w- f# I/ _        front = 0;
    + I8 @/ L0 F0 t6 h4 N8 @        rear = -1;9 K9 E# r5 R1 I1 a& H/ T8 E
        }! C/ N+ K* J5 Y" L" Z1 i/ @
    . Y6 g4 E- A6 N& u$ j6 b( q
        QueueImpl(int size) {7 u7 i6 L8 a- \& z6 B
            element = new Object[size];
    - e+ o* [2 q6 d5 a9 J& z9 E0 a+ W        maxSize = size;2 ]) Q0 [8 d3 {
            front = 0;
    3 O2 D: d' S8 o  K4 u3 i5 I        rear = -1;" @  t! z! _* g) ]9 d0 o! T
        }
    " p9 x# g/ p' s1 h* _" f! z
    5 P7 E. e% w& M+ ^; o6 Y    @Override0 k4 k* d9 L' I3 p  J8 l0 D5 |$ [
        public int getMaxSize() {5 E4 }4 N/ T7 _7 a" X2 Y$ m
            return maxSize;2 d9 x4 k$ W6 j5 b. ^0 j4 \  b% w2 g
        }- K2 Q; ?' w7 h) A: U* ]
    7 R- c4 }% l3 t/ D$ _
        @Override/ i, K1 k/ L" ^0 _: V
        public void push(Object object) {
    9 B  P1 R) B3 e8 B        //如果元素个数已经达到数组的最大个数,则进行扩容' |, L# B: p- B
            if (elementCount == maxSize) {
    0 d/ M  K- j8 u% D            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");8 A5 y$ x& }4 L- w5 \0 A
            }
    $ v* `5 l% q9 S" B, I& [        element[++rear] = object;
    5 R8 v7 x! i, ]5 h# C$ I  J/ D        if (rear == element.length) {
    9 D. ]* I; M1 s3 ]5 a* p            rear = -1;
    4 Y: n4 S$ v9 K) J3 V        }, b" ^5 G' ]; S0 u2 n! v& y
            elementCount++;
    ) y9 q7 b* b; {7 |. A    }
    * h2 p: d4 k" [1 {! S0 k
    - _. w+ w1 E3 {; {, a8 ~' S    @Override
    9 P  D, ?3 V$ @; X; ?, d    public Object pull() {
    - O$ \4 h8 X% \. V* Z        if (elementCount == 0) {
    & V0 b6 _  Q; w5 I$ Y: R            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    ) L% q) H# B' S( x) _$ Y( i6 {        }
    ; V6 k" o1 j0 I        Object object = element[front];% `) X( m) d4 M! M
            element[front] = null;
    " F0 h) N+ \0 C$ B. Q7 s: q% q        front++;$ b* c# d7 j% q/ ?8 I" i
            elementCount--;# q9 Q6 Y" r$ V3 ?
            //队列清空,队头队尾恢复初始值0 R. J! M4 e/ c/ t1 D
            if (elementCount == 0) {
    . n5 r* q1 G& r# R$ p            front = 0;
    $ ?# @& M+ M. R4 P1 Q            rear = -1;
    . w( O& Z' O2 G5 y5 N, K/ \        }
      F/ p3 ~8 T6 S" p8 t3 M        return object;
    - O, B0 ~1 ^5 M$ X' [, Y* n    }
    # m2 P4 h( p% b2 q! K4 {2 `% e) V+ b3 s# J: Q7 [& L. Y
        @Override7 j7 @$ ?3 T+ w1 Z8 L
        public int getElementCount() {
    " g4 G: @4 ~+ Q9 g1 n        return elementCount;) }: ^, k& g/ u9 {7 [+ |
        }
    , p# x2 r6 ]* [+ d8 O9 Z& `+ @" P% ^6 [5 @7 I
        @Override# D3 f& O& i# F. |) q
        public Object getFront() {
    3 c. m$ v* M8 b% J" Z2 C        if (elementCount == 0) {& V) C; ?/ i$ B+ [, {  D; k$ f" Y9 h
                System.out.print("队头无元素");
    8 ^; @9 s! `0 g% j0 x            return null;
    3 o$ h7 V& R+ c$ l( h' F* o        }
    / X  ~7 D! n  j; o3 j        return element[front];* n3 J! ?0 j) b% t$ t0 |
        }
    . g* a& u2 y0 c7 I7 k  i- C/ x* t" m. q* Z$ _' Z
        @Override% W0 d* q8 C% w$ h% `& d8 t
        public Object getRear() {7 H3 k- q" L, R; P1 e  z3 e
            if (elementCount == 0) {
    ( w% l1 |6 t, o4 S            System.out.print("队尾无元素");
    2 Z. h( G6 s# O% r) n6 F            return null;
    , r, k6 M6 i- c& T5 t        }* ]/ O9 E% i" l- v
            return element[rear];/ B( a3 B1 r' n- Q/ u; m
        }3 k2 h& a6 g; k( m+ w3 f7 E
    1 B3 l3 A1 z! C$ T+ i* B
        @Override& D7 c& d$ J4 z4 c7 u& W6 \
        public void traverse() {. Q$ N: G; w& U# Y9 T  ^7 y+ ~
            if (elementCount == 0) {# z2 k8 H- l# k9 B' q: A7 |
                return;8 n9 c% _5 f$ v) T, d- _* s
            }' D3 A! N" g' B9 q" y9 j) k( M' ~
            for (int i = front; i <= rear; i++) {4 h0 t+ @: Y3 x) O' Z- L- _. v
                System.out.print(element + ",");
    + z5 g: P4 n/ Z' C0 B+ Q  r        }
    . w% e& p2 Z# a4 l9 U& w        System.out.println();
    ) {) Z" \# T! z    }+ \/ G. b/ N' q- b
    }
    # Y& a, O6 T3 A& s% Y/ r7 R/ O3 ~
    & \3 d; K- b& P6 _/ _
    3、队列的测试
    ) ~: E" _  u* C2 y0 O7 Lpublic class QueueTest {
    4 l% R: ]+ Y# x0 \& T1 Y7 h    public static void main(String[] args) {4 q) g% `3 ]) H% K5 {' l
            Queue queue = new QueueImpl();
    8 `. [8 _, \) V" ?4 f! P- Q! r5 w: q1 \& a9 Q* k4 X. X. S' A
            //获取队列大小4 Y) S0 ^# t8 }. E. R: R' U' A: w
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    ! i. l, u# x* l5 }0 J9 @- ]+ @& a3 v0 ?
            //第一次入队列:压入1-15; o! {) X& }- H3 U! J/ Y
            for (int i = 0; i < 16; i++) {/ `9 x; s1 _, C- }8 ?/ _
                queue.push(i);1 Q. A: L3 d9 c
            }
    : `9 {( A' B# n  F        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    ' `: e) {  }  _* g: l. b! r        queue.traverse();
    5 S% V  D" [& [4 c6 Z        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());2 g/ H8 \& z/ Y5 n+ g
    . I) N* R! g4 T5 r( m
            //第一次出队:取出0-15
    7 B& w5 I4 P5 u8 B        for (int i = 0; i < 16; i++) {
    ' S% S$ D4 e/ q4 ?; f            queue.pull();
    . |) C  l7 W1 `1 ]' c( R" Z        }: L: p2 Y/ Q" a) T" K1 a
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());' x  M9 g. F2 s# V5 r
            queue.traverse();
    0 L+ R1 N& R9 q, z' Z  c8 s, D        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    5 ~  @; g3 {, Z' m& l+ e' d" T8 O2 R9 P8 O9 @/ l9 b
    * z3 K) l' N: y9 w" l
            //第二次入队列:压入16,31" K* Q6 E) x  @. R" v) a$ f5 n- U8 K
            for (int i = 16; i < 32; i++) {; _( Q1 ^7 h/ @) s" W
                queue.push(i);" l# P1 @' g, w4 I/ @, i/ A
            }
    : g* P  f4 {% C7 {' t        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());" ]* T1 t; T9 g3 I: R% L6 h$ l/ I; G
            queue.traverse();7 ~5 i( j4 B5 g0 {3 u( {7 ]
    ! c) I3 t' H9 [# s" ~

    2 g$ ^* m  ?6 }! ]+ [        //第二次出队:取出16-311 m1 m' v; M+ @3 \0 J0 f6 a+ o
            for (int i = 0; i < 16; i++) {1 j0 ^6 V- v% e: d2 b( u$ @
                queue.pull();1 ^0 b4 ^3 P' E
            }- \. V# b! ^6 f, C" y5 E3 }( Q
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());" n7 }/ s2 m7 \9 u6 ^5 @9 [
            queue.traverse();* i5 c4 e/ {2 A- s3 j

    ) R: [; u4 g" b  f6 o- N( u' K        //空队列出队报错
    5 u3 g" d  P% ?# R# M! L, C        queue.pull();
    5 Z0 P$ n9 T# f& y. |1 ~: Y
    , W; I- N. u" p" B& ?' C    }
    ( i, \2 q5 ?" ?$ @9 l( y}
    8 f, ]* |6 @; A: ?
    ' T( k/ U1 T% D9 Z
    & y1 ?  b) Z9 U+ W' D/ U  P# ^3 t  i8 D  n9 K

    / ]) B( H: q' b9 K# y* T% _
    . B5 q1 Z9 }0 ~# _5 A# h
    7 J4 i/ F9 U* z" g  f; z6 _; V! m, t. [/ O! A# A8 w7 r6 Y) ?

    5 R  ]3 z+ k" c( K( V
    9 h7 |. ]9 N+ t3 ?, x& c, E) C5 E: Q' h* |- v

    " ]  d- i( g0 `8 B5 L+ u2 H) Q" E. C# O# A& W% y
    6 G- M) m; D5 C: [: A: _

    & F0 b$ `: F8 }- F5 L+ q1 i+ O/ D; M1 ~
    ————————————————
    , V* |# U  s" B% w% e5 r  n# @+ Z版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& o% W# R' f0 h: Y) G# l  i
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    5 }4 z1 c3 F, z  R" J  o3 a; O$ a8 v3 r7 O7 \
    ; c  V; l, r; ~( g" ^
    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-4-22 10:34 , Processed in 0.613158 second(s), 53 queries .

    回顶部