QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1678|回复: 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

    & Q" ]- r+ `7 i数据结构——栈(Stack)与队列(Queue)的手写实例5 m: O, l% X0 M' C3 k
    9 v" J! X  Y2 r. R) d1 F
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      5 y. F, s8 E+ ?) j6 V; V
      • 一、 栈与队列的定义
      • 二、 用数组实现栈0 }" [8 [4 o9 z/ s0 K
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试8 H8 \" Y; S0 Z  ^( t1 L
      • 三、 用数组实现队列" J5 o7 J5 V3 V2 U; t1 W
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试) l: }  q3 T# e  Z! o, [6 B/ u
    . Y; A! }- W/ _6 l
    9 K0 X$ @6 t9 H0 m" i& J
    一、 栈与队列的定义
    9 R) F" N6 B# O" Z& N+ P# V( }栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。! r+ b& N: X& z8 K
    1.png   V% u* w$ I" V' a& Q& D5 e0 V. A
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。0 x9 n% F9 G* w2 ?+ \
    2.png 3 w  A7 b) `2 {( t0 b

    , l- M4 b) ~4 F8 G; N, P/ K3 }
    : d1 U+ H3 m7 ^# }: C- R二、 用数组实现栈1、栈的接口定义
    % M9 ]; ~  {2 Q& ]% V# z# B* Y/ G/**$ d6 B' S1 u' k' y7 N7 e6 Z
    * 定义栈的接口( l% ]+ |1 M9 `
    *8 ^0 o% `, X# A, R" y
    * @Author zhuhuix
    0 R! e# A9 j' X6 T$ H: H * @date 2020-05-01) v) m7 Y) q* o  H3 j
    */2 x0 n0 b/ @, ]4 m
    public interface Stack {
    " B; N, _: A0 e5 J    /**% p# D& `  y0 h: R  l
         * 入栈
    . ~$ C, ~- U) F0 f+ H) Z* U# b     * @param object 入栈元素: G  y% N3 `4 O' ?( v# T' G
         */
    5 k7 j! o  X, X; S9 h    void push(Object object);2 `+ `% m" U) H- O3 d0 p
    0 B3 `! o) w3 H" K# y! \
        /**
    ' I) U0 \# V1 K* d     * 出栈) J  ~0 k9 I% ^8 Z
         * @return 出栈元素! x2 U+ Q6 J# c4 e) x
         */
    / R0 t* j- ~. m/ c. J    Object pop();
    . t! {6 g- X, j4 w6 {: P0 w9 J8 C% P
    # _+ i; ]% B9 j# E: Z5 m: G9 i    /**
    0 I" P6 j) j9 @, F     *  获取元素个数1 `0 X  Q  F. @! s$ }
         * @return 元素个数
    # g# U* w! @; ]     */; {* H2 D* o. f( M6 W
        int getElementCount();
    - F) v& c/ K- p: D/ Y3 z( i
    + o7 ~" {4 u+ [# M6 q0 L0 z    /**
    4 w& j  v  n( ]9 w     * 遍历栈的元素; N1 |! x& a) |  j
         */
    % [) o6 m0 T9 O; u% X3 V    void traverse();
    7 `7 F2 C% z/ k: |2 l6 i, A
    , ]9 U, z) F5 \& _% ]}
    % }% T4 a* y# H# m2、栈的接口实现
    ; n+ I  p$ p4 @, j/**
    0 k6 M3 `6 I& R" P+ `/ d$ P9 } * 栈的接口实现
    ' l5 R% I  F' m% ^9 @: K *
      l7 \; J7 Y( S' L0 o$ w3 ~ * @author zhuhuix0 W7 Y1 H9 K' T) X
    * @date 2020-05-01
    + s. c% I1 _5 S" {$ v */
    " u# Z7 d. K. ?9 F' P3 Upublic class StackImpl implements Stack {! G" F9 L3 a/ J
           
    ( ?, q! z. \6 H( D4 k$ z) N; y    protected Object[] element;
    $ r: ^! {. E" K* h
    5 h/ G7 N0 m9 X0 L4 t: b    protected int elementCount;
    / X- l5 [( r1 O/ z$ n+ M8 f! t$ O2 R. V: L$ K5 z
        private int defaultSize = 16;& Z2 x$ g. s& b) z9 y: H0 U) x

    # O5 P! i, W2 r2 C    private int maxSize;! c( u7 E) V5 k: N

    ( a; M  I3 C+ I1 J    StackImpl() {
    ; i# _  r, ~+ _) x9 J! p0 g: t% P        element = new Object[defaultSize];
    & N2 s5 J- t) _; c, }5 q. P        maxSize = defaultSize;" B+ Z5 h) W+ ^. X" g. Y
        }
    8 m" c! D8 \4 W8 J! H8 j
    0 s& g: c/ D  s0 |: ?; U0 |    StackImpl(int size) {
    4 H3 O/ \% {* N" `- F6 m0 l" m9 j        element = new Object[size];
    6 W. W5 E/ P$ O9 f        maxSize = size;' B9 p4 \2 R5 `* t- Y8 i) P7 `* y, Q
        }
    ) R# b( |6 B4 p) K9 z! C) Q- c0 M. s: T4 ]0 Z- ~0 Q
        @Override
    0 \2 A: o6 f  Y8 g% a& ]9 ^    public void push(Object object) {$ u# p, ?6 S5 x/ k. n
            //如果元素个数已经达到数组的最大个数,则进行扩容5 r2 _0 e3 Z) |, E8 p
            if (elementCount == maxSize) {. A( v$ F! y3 J) c2 E% V
                element = Arrays.copyOf(element, elementCount + defaultSize);& V; G# E; ?8 e
            }
    , e! V, t2 I8 d7 p  m+ v        element[elementCount++] = object;8 k5 l* g" M+ T: j3 J2 ^9 w

    * Z: B) ?7 R2 Y' V    }* Q; ?4 h" M: ~5 E  J! N
            // 本代码未实现数组的自动缩小,具体方法可参考JDK: p/ G  G+ \; C! q/ a# Y6 ~! l
        @Override; c  C+ q, W) N
        public Object pop() {0 \  c+ T: D7 C1 c- Z1 z6 J; M2 {
            if (elementCount == 0) {
    ( D5 ~% ?8 T% ^$ m& }  l            throw new ArrayIndexOutOfBoundsException("栈中无元素");
    % `& Y. @& i4 T' R5 i5 W% ^  m4 |        }
      J% U' r/ k. U        Object object = element[--elementCount];9 W4 E! i1 P( t1 T/ @5 w- [
            element[elementCount] = null;: D) @( k8 \5 ~  t
            return object;
    9 q4 u6 I8 @1 ~    }
    , W+ `. L# `% K9 q! @& b; l, T8 n/ m, s1 A( E* K6 x
        @Override
    : h8 R: t" k2 ^; j3 Z4 t9 _    public int getElementCount() {
    * e2 s, l; V; `; L( V        return elementCount;! z7 r, ?2 M1 u/ U7 ]1 D0 ~
        }7 I% l7 c9 f* a

    , C# y0 n& {% `$ k3 a5 Q6 I    @Override1 v; {" y+ x3 w# G
        public void traverse() {- U' L. H5 c" r  S8 K! c% ~
            for (int i = 0; i < elementCount; i++) {
      h/ n* ?1 G. [+ ~            System.out.print(element + ",");( M; ^  Q( r; _2 C& K5 s
            }
    : g( T7 M1 L- b$ c8 g7 W0 n        System.out.println();
    ! L1 h! }  L# q/ N4 G7 R3 w7 A    }
    & ~# X% a/ z& C8 ?2 |* d}
    ) z" R" R: Q* M6 P3、栈的测试
    " H/ D! K/ W& ?+ epublic class StackTest {
    2 |. X5 B9 a* ~0 v: Y/ g' s$ [7 ^    public static void main(String[] args) {
    : o9 L; Z6 e; _# S        Stack stack = new StackImpl();2 @2 T3 x5 A- y

    ' a, {: e+ W1 l, \        //第一次入栈:压入1-15
    + B! B+ A% v# R  b7 p1 T" L4 S) G        for (int i = 0; i < 16; i++) {# v. D) n9 ^" Q1 j9 I/ t
                stack.push(i);5 |6 P' a# y3 R" T. v% L
            }
    . k  c! Q7 n4 S$ z( l. B$ R        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());6 [- e1 |$ m: t( T& r/ `
            stack.traverse();
    * r7 X# E2 f7 A# R' G  j8 T; {0 [3 k/ a9 K3 W7 B' q; I" H/ t9 K: A5 [
            //第二次入栈:压入16-317 r) M) y/ m0 ~
            for (int i = 16; i < 32; i++) {
    + M1 v/ q( ^  X+ m* P            stack.push(i);5 t- Q  Q- j( d" L: ]
            }/ X* H( h6 d# s  [
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());7 ~6 c: e7 q  F+ R* k& P
            stack.traverse();
    % {9 v2 l0 C. H% f  {* `+ d. g, S% @
            //第一次出栈:取出31-16
    + Z) H. ^# _8 M  n* p! P4 v4 |8 b        for (int i = 0; i < 16; i++) {
    . r" j) d. G, U: S0 W            stack.pop();, x8 N% Y6 S8 p& P. l7 `
            }! E6 ^) e1 [. F# U
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());; A. B/ h) I5 W/ ]. }
            stack.traverse();0 r9 {! a9 ?' O$ \' \% ^. a

    " f2 o/ t. Z5 X& f' t        //第二次出栈:取出15-0
    7 q* a6 J4 v* O        for (int i = 0; i < 16; i++) {! G( A2 o) t6 P" u( _8 }. J
                stack.pop();* S  W" W' B9 V4 @# T2 u
            }% ?* b6 }1 F- O0 k
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    * p5 _7 ]# l1 W) `9 G- W        stack.traverse();9 ^0 i- j9 {$ z! ^
    " t4 P& M0 G: s* _
            //栈中无元素,出栈报错. [: r' v. y; G) \$ R4 ?
            stack.pop();8 |* o6 |: x/ Z
    % B5 A. J! y+ J! |, Z# }
        }
    ( Y4 W( O5 Q3 Z7 R}
    ) D& z2 |$ t8 k: W! B$ o 3.png
    % R$ T/ K& Q5 f* u. K/ \% n# ~& R8 Z9 K- O4 t  |
    ( v6 ]* _% t+ [
    ' s5 {* ?$ N4 ]) E% i
    三、 用数组实现队列1、队列的接口定义9 K8 R* O  f) d6 [  B5 @, p
    /**
    8 F( Q& Q" a5 `4 q5 _8 w# Q# `4 t8 Y * 定义队列的接口% C/ e) {( u3 n9 G$ g4 E% L$ w% r
    *' @; Z7 |; J6 _7 v: H
    * @author zhuhuix  @5 ^. R$ S4 m4 O, ]* O) \
    * @date 2020-05-013 H' N7 f: D# h4 G3 V3 }
    */; B  G2 a; B, j5 d( v* Y9 v
    public interface Queue {- M% {$ h, m! n# h# J

    % J' I  E  P! l1 G    /**
    8 o& I. a& |( I3 k9 ^: ^     * 获取队列大小' N1 y- F( u/ I6 N/ }; Z0 R
         * @return 队列大小
    : x" [3 t5 Y  R: S6 `; v0 B     */( C0 _- [3 F" U# K" [. D
        int getMaxSize();
    3 S- h- r8 i# j) m# G/ ~% C6 C3 R9 M& f
        /**2 `: V1 v0 v( p  k, h8 H
         * 入队% T% ~- R: O9 K6 `+ Z6 {
         * @param object 入队元素. N5 g0 ^* G1 |0 o" x2 u, E
         */
    5 u2 W% ?) g) Q3 r    void push(Object object);0 W8 J) V1 T5 v$ b- u8 }  Y& o0 C
    " }& P/ W/ ?; V& ~: X1 k
        /**6 s6 E" G3 Y& B2 E5 Q- G
         * 出队- X6 D. |/ o6 J5 h4 Y0 `
         * @return 出栈元素
    6 m  z7 G& O! T+ A4 f1 p% y9 x     */! f, r+ P- r* e& b% b( V( K
        Object pull();
    ! o4 M. Q: Z/ U" R7 G! d( U
      M( h$ P) h8 g* S4 a    /**$ i6 _# d* |6 I' d- k6 p3 i# _7 Q
         *  获取元素个数4 v% j; e. O& z& B5 t5 C
         * @return 元素个数- Y) R5 G6 a* s$ H( ]
         */! h  r) I" j" @1 Q
        int getElementCount();2 Y8 X+ `' D6 h. Q9 ?. i
    % J5 m, X' D$ B* n) X* {- Z
        /**2 a0 L6 l! a6 B
         *  获取队头元素
    . `% x. l! f; v0 D# L8 G     * @return 队头元素
    ; G9 p6 d3 a, M0 C2 {9 o& X     */3 s6 z+ _7 |. V# m* z
        Object getFront();' R- A1 \( M  O: C) i' G' \

    : O. W2 b7 S/ v    /**& {/ P: F, Q: s- [- L+ y7 b
         *  获取队尾元素  I9 y. X1 X. E: ]" v
         * @return 队尾元素
    + `: v3 N$ u# [& d+ e2 l     */
    / S  a7 e: ^' E. V! @    Object getRear();7 y1 G4 m1 }) ]9 @0 h) b& K3 G

    $ q& [' W: i9 I9 u% ^7 a( o    /**% l5 q) ^7 p! g% ~# V% }9 F
         * 遍历队列的元素
      d% K5 o. {% u* E4 U4 W     */9 I( W7 t0 V) ]" q
        void traverse();
    8 p. W3 K4 ~3 m}$ U( S% J! C. \: ?+ W3 Z
    2、队列的接口实现6 T4 Q" G3 a4 S$ S! S" c) b- q' _9 M
    /**7 m) A) c  `1 L: ~9 |4 `0 s3 Z! b
    * 队列的接口实现) L1 |2 K+ t  R  g" E
    *
    9 A- M3 ]$ l- D0 [5 t * @author zhuhuix6 h4 d) U# c2 l. l) u. m
    * @date 2020-05-01$ A+ `' Y% v9 T1 {: E" l
    */6 U! x8 H# N" E- S- u
    public class QueueImpl implements Queue {
    7 d3 G4 u% E5 `, Q+ t4 n1 p( ^4 _. N
    0 k) k6 a) [. s! t    protected Object[] element;
    , C' [; W! p. [7 u
    6 O- ~/ j6 L% P9 Y* W0 T3 S    protected int elementCount;
    4 g. Y3 E4 K" m* x8 l& c7 Z1 a) q& z+ _" U1 v
        //队头
    . A! Q/ g+ @3 u. d    private int front;
    + F3 O7 \6 C4 M5 p; P* v4 N
    . q3 I/ K% Z: R4 y) }1 ~8 X    //队尾* U* w+ F2 p9 j* u1 h
        private int rear;
    " m) s; J$ _) O# S- {& c0 r9 M# G7 R8 G/ K0 c/ c1 K
        private int defaultSize = 16;6 l: v2 Y/ m' k

    ; U' A: E" I4 \0 ~    private int maxSize;
    ' @/ n) O# f, P/ ^( b/ {; A5 q* k7 g  f3 T8 a
        QueueImpl() {
    + Q2 X! p) V! w5 U8 {        element = new Object[defaultSize];
    * [$ A% d  @2 a2 d$ X3 j        maxSize = defaultSize;
    + P' Z2 v+ w* Q, O# i        front = 0;6 r) U. L9 l  D9 G% Y; ?% @7 k
            rear = -1;
    9 Z, M* p" `9 O6 B5 |    }
    - W6 V5 J+ Z5 l" g
    , F% I8 g, ~! u0 I    QueueImpl(int size) {" g6 V. Z2 `$ @1 |
            element = new Object[size];$ A: ]; B3 t; E. O$ |
            maxSize = size;
    3 X# g, T- }6 ~! p* G3 y        front = 0;
    . j5 T  U' e+ @/ D5 f- U) |: L        rear = -1;  X" w$ l( x( n
        }
    # ?7 r2 W) r7 J2 c9 Y  Z
    ; l) l  b9 ?9 ]) d5 v    @Override
    ! d* v9 M( Z/ s+ Q    public int getMaxSize() {' y! m0 p( j- q" S6 o
            return maxSize;
    1 O4 U, f  m) l8 w$ [    }" C) l  O3 C  v& T

    ; s: N; ?# [. Q; z/ _' n6 \    @Override. c8 A5 `# r* P* O# T! o
        public void push(Object object) {6 W' \" _1 ~0 h" D: D# [
            //如果元素个数已经达到数组的最大个数,则进行扩容7 ?9 A0 k( c) R6 c# i. \
            if (elementCount == maxSize) {
    4 b% \' u( F, s# S" M# t0 r1 D* d; s# \            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");8 F6 a  {3 f, h
            }
      M8 |) X+ S9 C        element[++rear] = object;  J# @8 m! h$ O2 U( r8 F8 O9 b
            if (rear == element.length) {: e. u# i* v0 ?" n9 m
                rear = -1;
    # m! T. u* U# s& p* @0 b) [0 I        }( }# j1 t: e8 U
            elementCount++;
    ; X7 _& K5 j: e    }+ Y( c9 U2 Z5 {( O4 @& d% `

    6 k% {9 i5 m1 t2 S( R    @Override
    ' Q% H# ^. a4 _2 P    public Object pull() {
    : R. p5 k. F+ e& X, j* ]5 M        if (elementCount == 0) {
    0 V% n% I  Y% x1 d! l            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    8 s6 e( F( d  d$ Y! Q# B2 {$ L8 Z        }7 q% C" o  r& y# A0 m+ U
            Object object = element[front];
    + r; [" E1 |4 P        element[front] = null;
    5 `& {) d( M+ ^" @+ |+ g* ?        front++;9 N% |) L% m7 t5 B& Q
            elementCount--;
    ; x, s9 a) x4 @- e        //队列清空,队头队尾恢复初始值
    * \  c  \8 D7 o4 c0 M* x        if (elementCount == 0) {
    6 a1 t: X# Y' u) [+ J  \            front = 0;
    2 q6 r+ V* s0 ]+ A            rear = -1;" U: ~7 U0 e5 w/ J+ Z
            }6 G7 z6 k% ^8 M
            return object;+ v4 s( y1 D+ Y" y' L2 ]# K( ~; N
        }! c6 K! R* ]. @0 I0 z

    . X' @- t$ k2 S. ]( G! I    @Override" s& O" Q/ W8 T5 P4 E1 x
        public int getElementCount() {
    * z* z9 J; l& T        return elementCount;$ i$ |8 U, F2 B# e
        }
    7 D' ?* b2 \: b2 c6 I( z5 e1 a6 s; W9 v# |2 W
        @Override' {' _7 o9 `: n4 b" H5 z
        public Object getFront() {
    + y3 `9 P0 |2 d% K% c        if (elementCount == 0) {) _0 K% E+ z: U6 c
                System.out.print("队头无元素");
      x/ m! P# `" Z  M! R  W0 e            return null;
    * ?/ V, F7 u' m; E9 Z        }
    9 x: O, C' T& b. m) o# H) [9 m        return element[front];
    ; l8 U. Q: n7 [4 m    }
    8 p( Y! d7 Q+ E( [6 E6 o6 D  [
    2 t: u+ f, M1 D    @Override6 v- S5 n9 |$ T8 v5 }3 y& G
        public Object getRear() {
    1 H6 ~. [) G6 v, ]0 @) G        if (elementCount == 0) {( }& S& h- @7 t. u3 k) u% _
                System.out.print("队尾无元素");/ ]) S. X1 W. @8 B3 V1 K
                return null;' c8 E/ W$ O: f8 f  V0 S9 o0 |$ ^! F
            }4 c8 T( v/ d" C8 n/ v/ ]
            return element[rear];
    * M7 r/ S; @* ~  Q    }+ Q/ N- z2 c8 H9 Q

    ; o$ _( f* F+ e, I" Z$ b. B    @Override
    $ x* ^5 f0 L+ x. S    public void traverse() {
    3 h) [7 Z% k% ]        if (elementCount == 0) {
    : ]- i0 z/ M1 r+ }3 S5 l" G' G3 I            return;( h$ i4 H8 q* J& u: a  g
            }
    ! K& \2 [9 v% J: b: D6 V) G0 s5 ~3 X- R4 d        for (int i = front; i <= rear; i++) {" x- l6 ?! R+ U' u/ [
                System.out.print(element + ",");/ ?3 [. H4 g% F, E9 t
            }4 z" Q' r1 b$ @- w) C8 t
            System.out.println();
    4 l+ K: g6 C/ ~9 E& T+ ?    }0 w' O& j' W/ O0 f( E& M9 a% P
    }- K3 ~& @- |" n  x

    7 p! B/ s7 X" p# I( R, U7 Q
    - ~8 r8 D, a: j3、队列的测试6 H+ w9 }6 l4 T) W# n7 q2 o  E
    public class QueueTest {
    9 ]5 d( ^8 [- q9 V    public static void main(String[] args) {
    ! O4 F# {" }; E( C        Queue queue = new QueueImpl();- S) W0 e( j0 g
    2 ]$ k4 e4 L7 x% `. \
            //获取队列大小
    8 v0 X; Z% \) S. L2 ^  ?        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    1 T/ y8 o# Q7 Z; H4 V- U6 O3 i# @% T- Z4 T4 y( z) S0 n
            //第一次入队列:压入1-15: W/ Z1 ?7 D0 _: `
            for (int i = 0; i < 16; i++) {
    ! Y& n/ n4 r& F* [8 S            queue.push(i);4 F' B9 i7 k8 `7 O+ ~: d
            }( m; t1 f! s4 R3 w, T
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());& E4 L! K6 E, n3 D" B8 Q2 ^
            queue.traverse();3 b0 b/ ~; e# a( o" \
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ( |- @  q0 h8 Q) x) X2 e
    9 C" T# j& V2 r/ m" N$ _- D        //第一次出队:取出0-15( E, v" y  y/ k) J; D
            for (int i = 0; i < 16; i++) {6 _( H& L, o4 m# o9 F* F* u
                queue.pull();6 l5 Z$ u# ]' p5 N4 P6 }
            }8 D/ `/ h4 i9 \
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    2 P  a; C5 \+ f. {4 q        queue.traverse();
    " }  r) D5 R1 a        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());# J- d. c# l" c. [5 N6 q
    5 V" N8 K" \  [

    ; n' ^* g5 ~$ W) X$ T9 ]! V" i        //第二次入队列:压入16,31/ \: q: `$ J1 j( \
            for (int i = 16; i < 32; i++) {1 S' ?$ K( H0 S0 F
                queue.push(i);7 x% V6 U( x7 s2 T' r! R
            }% B4 P) t2 |3 m2 `/ s4 Y% D
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    , a, k& R( o9 X5 S. k, j. V        queue.traverse();  U$ I2 }, C+ t

    - O! x4 P' \3 k+ N  V3 l! X8 L1 G, [  k4 M. x6 f" y. U
            //第二次出队:取出16-31
    0 m2 s: N! J9 S9 d& Y        for (int i = 0; i < 16; i++) {. S5 d( V8 r8 r
                queue.pull();* `: Q4 p# _% V1 M
            }+ |/ R; D1 g& B( R5 Y
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());# _( K2 d- ~# t2 \2 Y3 c- H" v
            queue.traverse();
    + T4 @) y/ f; ]  `
    : A  ?% V8 n6 O, X, C        //空队列出队报错) g! N/ _- }7 F1 a
            queue.pull();
    $ M% v) X  `8 Y% U% H/ |: T! S. U0 q# D9 ]- Z8 o
        }
    ' v) B+ n* e) @" X6 v) G4 q}4 j/ k+ X9 i4 I9 ]
    - X3 G: J* I8 O6 x
    6 k. M6 j. y0 [+ }9 W1 ?2 X

    & M4 v( O  i' d2 O% f9 t9 e- A8 n' }

    & _% H) @: }$ `4 G7 m+ y% p2 _2 n5 G  j! H. ^

    - e5 b: f) F; p: R4 E* y* a- o4 w
      s& i& K1 |, |; W1 ]" Q1 I6 i1 U" X: v1 Q* t

    : M% Z& u$ R( q& z) s; S' ]1 T. G  G0 ]! b. R7 g8 Y

    ( b% M% S2 E8 u1 {7 t, ?1 f
    9 c+ v2 |7 C4 O  K9 Z
    ) R/ `- Z5 A5 I( S
    4 }. a% @0 _; t  ?$ ?: l% k) `————————————————
    5 i) e% F% b9 x( c. Q版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    9 e$ K5 _! H0 q$ Y, K原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785* r/ j$ a+ b  Z2 E( [1 }& @4 ^/ f

    9 C& q) Z1 w" M4 K$ L1 P- A7 h8 e2 Y7 v6 }
    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-20 19:29 , Processed in 6.999653 second(s), 54 queries .

    回顶部