QQ登录

只需要一步,快速开始

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

    , b4 m2 c  y+ Y3 Q, d数据结构——栈(Stack)与队列(Queue)的手写实例" ]: ]% m* |7 L0 y* o$ K* [% c0 T
    $ {# Q" l, J/ A$ |
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      % _, W8 M) `) [- J/ R5 m" I
      • 一、 栈与队列的定义
      • 二、 用数组实现栈# ?) w1 U4 ?* k( u( `8 u/ R
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试! s+ U. u0 N1 u% ~
      • 三、 用数组实现队列
        ! e0 `" ?$ ~7 v! Q
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试) E' r" n* o# w  T2 k
    / ~6 ?5 ~. S4 F. C
    1 M/ Y' J/ B5 w& n# ^+ ]
    一、 栈与队列的定义
    ( I" l0 m4 S/ L  {1 J栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    * c1 J8 c# B8 j" U! {* ] 1.png ( B0 I& h. I" l/ u
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。  v, Z2 |5 Z, h" t9 ]
    2.png # r5 _- @0 v' X5 ~  I. a
    . |/ Z" l# L; ^/ b# ~1 I5 i
    4 {2 T$ e  y1 [! p+ S9 T# q* e
    二、 用数组实现栈1、栈的接口定义) l/ S) t& _/ ?/ K4 C$ q, @2 ^
    /**& Y0 W# d! j* D$ E
    * 定义栈的接口5 i- v- w& m/ u
    *  n/ A5 K4 V1 y: ^2 w$ @$ U
    * @Author zhuhuix  r% h" }3 }; z/ W8 z2 ]# f
    * @date 2020-05-01
    2 q6 I) a' D# U7 y8 o& q */
    . Y- I. t, F9 O6 U5 T" z4 Hpublic interface Stack {' ?# U+ P0 i( \0 O0 g: J. G5 }$ a
        /**/ h( u. I) z" g2 A9 [+ p
         * 入栈
    # T3 E" |4 W" S: k4 _     * @param object 入栈元素- l. H- h4 V- |- E  n# |$ Z
         */
    ! A0 d  \1 y) u" D* U    void push(Object object);; s/ Q5 }7 r6 R/ H9 c
    6 ?$ T8 k% m( R+ N- y5 a
        /**0 J+ n) x6 z( k* c- R; B4 n
         * 出栈
    5 d9 ?" A8 E; l$ x- ~8 B     * @return 出栈元素5 W, A0 A! @0 {$ i8 C" i% y: _
         */' k+ u) e( G: U# i" I- J  h
        Object pop();+ {% v: ]' J& Z6 I

    % [! e* N0 [, j! T6 ]: K    /**
    5 ~, W) q5 b' s) W8 ?7 ]# ]     *  获取元素个数
    & h* O( E# ]6 Z" A     * @return 元素个数
    + Y3 l- D9 U0 m     */
    1 ^0 u2 }8 P+ K    int getElementCount();
    ' V4 v) r6 b9 Z/ j7 G- _5 H# r1 a- a8 O1 A' b6 a3 u
        /**
    ) n+ a* r. ?, A5 g  c* d2 Y& ?     * 遍历栈的元素* x3 h7 f5 p8 r4 F( z- L: B
         */4 v8 }4 n& E7 z+ [% X
        void traverse();
    5 Z8 J* h  ^( @+ p6 P
    * g0 \. U3 e8 k: R4 Y}6 O: v' R9 M7 e0 R+ {# ?$ j  I' x
    2、栈的接口实现4 K% ]0 A( ?' N6 n- X/ x0 p
    /**7 f9 ?5 `4 h( R3 U$ s9 B1 C# Q9 J
    * 栈的接口实现& Q3 K& f2 y; m6 x5 w) r# A0 B. F5 a
    *
    , Z- w  r! c" e. O( j7 G* S * @author zhuhuix. O4 x0 ?5 J& G% w
    * @date 2020-05-014 X2 X- q1 ?7 A& A+ M
    */
    9 q3 p0 f7 d% D& P7 H( K  Spublic class StackImpl implements Stack {1 i0 T$ n! |. j8 s% y
            4 N  R% H$ l7 S% j7 o* E( ^* N
        protected Object[] element;) A3 Y* D: }4 \% w3 r- Z

    $ t, d/ x* _* v* @+ F! T. F    protected int elementCount;! B& J2 w9 U1 D' A( }$ K. Z" i
    7 n. u' l# N; e4 D
        private int defaultSize = 16;
    ; A% D) z8 e' Z2 i2 |; @* \2 M9 D; U' b
        private int maxSize;" i1 n. l, S! |/ W3 M0 E

    ' n3 ~( W9 K5 l: W    StackImpl() {
    . b  S) f, ^" G$ E        element = new Object[defaultSize];
    3 N. ~( {9 `7 y: W9 G        maxSize = defaultSize;5 ?& O+ \) N5 G, V  b9 ]7 d  y: `
        }7 L5 M' o' `4 i' z: D! z0 T
      {/ V2 n3 w& }1 y9 l" O
        StackImpl(int size) {# B. @$ M* M! z) B! s
            element = new Object[size];
    $ o2 P. \: C$ R1 c5 S9 ?3 f" l& k        maxSize = size;
    ; E) ^5 {6 Q8 x7 F7 P    }
    ( }7 G! g, {$ R- @( I4 M, @1 i, z# m" P. X8 d+ h/ m; D
        @Override- {: i9 M8 k" w# _7 w$ b* P! T! z
        public void push(Object object) {
    : {, [! O. _9 R- d1 C( M* G: e; @2 _7 U0 X/ ]        //如果元素个数已经达到数组的最大个数,则进行扩容! m: E# H  ~2 ~  f5 [/ j+ o
            if (elementCount == maxSize) {4 B1 g7 }7 o! ^& \, p) ~6 S
                element = Arrays.copyOf(element, elementCount + defaultSize);, c7 A  u( _7 @( `
            }
    & v" G3 @' E( u        element[elementCount++] = object;
    : n, |6 ^0 k1 R; _$ j6 y0 {1 b3 o: ?9 h; k8 `. B
        }. [4 `' Y! J8 p
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    ) S5 B. a% [( V7 o    @Override$ A8 }8 k6 h# U( {" m5 {9 D
        public Object pop() {
    ) ^8 W, V) ^7 y! J' o9 D! R        if (elementCount == 0) {
    4 \. i( s4 I# e# ]            throw new ArrayIndexOutOfBoundsException("栈中无元素");$ K- ~) }) S" S/ K9 _( [7 J4 O1 b
            }
    * c1 r! W0 Q- c$ J1 |        Object object = element[--elementCount];1 ~2 {+ ?6 `, O- ~3 F
            element[elementCount] = null;1 V3 Q$ U: f3 T  u- a/ ?; ~
            return object;2 W  V7 V+ ]) C' l- g  p& J* c
        }
    9 w8 D6 X* A8 `% R! p) r/ q
    : q3 t( C8 D$ G6 y% T0 ?    @Override
    - N- z: o; e  B  d  G    public int getElementCount() {. y1 @/ a  v+ I
            return elementCount;/ Y9 R  b& g. ]" D( t
        }- R3 l1 b/ p+ j; `0 g) |4 w
    ) f. s9 y1 U+ P. n$ }
        @Override  I2 A, A4 o; Q) J
        public void traverse() {  T4 a6 @6 u3 E5 S6 c9 C$ T- A% m
            for (int i = 0; i < elementCount; i++) {" l3 f, Z" ~% o( P+ a# c, T/ L
                System.out.print(element + ",");7 ^) |2 E" _& ]* _6 C. S
            }6 y& }5 a5 ^8 L8 f( {% h
            System.out.println();0 R7 z: s" c& ^4 Z* P$ e6 L$ D% u
        }7 ?8 c, [$ ~, `3 I7 V6 I
    }1 _* P6 S/ _$ J1 Q" x( P0 Q; f
    3、栈的测试
    ! C5 D$ X" u. ?public class StackTest {! J' T( e5 A6 Z5 p) }
        public static void main(String[] args) {
    # X* j7 k' k% y% D# ?- I( y: ^# E5 g        Stack stack = new StackImpl();
    7 M, D$ k4 v; e" t
    ( w" V% G- u! E+ ]        //第一次入栈:压入1-15
    / R2 u3 m" w- q  t        for (int i = 0; i < 16; i++) {# u$ n# P2 W1 f3 S
                stack.push(i);. f0 Q& C3 ]- k2 P
            }( Q/ q3 d, C( i! M: L$ V
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    8 ]4 Z" V" g& t! Y/ N) k0 [        stack.traverse();& p* D% z3 I! _0 V# j3 s: ?" o0 V
    ) u, s* K9 v1 y6 n( }: t5 b
            //第二次入栈:压入16-31
    / A. L$ a, L3 B  C        for (int i = 16; i < 32; i++) {" m, V' g1 Q- ?; p
                stack.push(i);/ j) c; k5 H1 s, _% ^* F! u5 e
            }' a0 e. v+ e9 V. x. ?
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());% q1 b# q! O* L6 p9 [/ @$ D! `' a
            stack.traverse();. o/ i  K. ?( I4 i9 P" N

    % H' y* A4 q; V) i: R        //第一次出栈:取出31-16
      F2 c) |- n7 B1 O. Y; s& \) m        for (int i = 0; i < 16; i++) {
    / o6 `# I# W9 `4 f            stack.pop();- s! U9 M6 A$ ~# P+ c0 \- Z
            }
    ! e: j$ I, e9 t" D% F+ \        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    4 b" \" S3 e" Q& Q) u: t; a$ _        stack.traverse();9 x0 G5 N- m- V. n( c
    + U8 x: w- x2 J6 V
            //第二次出栈:取出15-0
    - A" I9 Z: d) U; _2 A        for (int i = 0; i < 16; i++) {
    " y; l: O: |/ i# Z8 B0 I7 g            stack.pop();
    . i, C( v# i9 R" A" F; O        }- o' l' Z  P+ @$ H5 R' R4 I
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    # [( _0 [) b) c2 [" l" |: O' p9 C        stack.traverse();4 A5 r' p: D3 a' r1 m1 P

    0 X; Z) X1 K% C5 H: c: _        //栈中无元素,出栈报错6 L5 F1 V$ {" ]7 R% i9 F( u
            stack.pop();* o& }) G5 X5 j6 R/ j9 P

    4 `3 A3 x7 X7 {4 U3 w    }
    + b* j1 N( G7 z4 }7 n+ l/ L}" [5 ~  J( x+ {5 J
    3.png
    - H; ]  b& d3 N. R8 H/ q: L4 Z% t% ]+ R+ u( @6 b8 d) \
    6 [2 h" f" r7 ^  D, u- P* Q

    ( R/ H' Y2 n- T8 ]三、 用数组实现队列1、队列的接口定义
    * `" k/ E6 l5 h0 G7 m. m/**
    ) A- G3 i0 x1 s; s+ k& I( W * 定义队列的接口) Y! _$ n2 c! j: R* z
    *
    , m' A1 L0 G  `% ^ * @author zhuhuix
    8 R0 u8 i2 Y9 N( ?* n5 [- [: P * @date 2020-05-01
    # O; ~$ g, Q. T */
    ( h& x8 {, s- E% w% Npublic interface Queue {5 `7 L1 h4 S* t* I& F, E8 b- _
    ! W# }* G  T* s' _) i0 ]+ D% }6 {
        /**
    ; x/ E9 J9 m$ {+ D. u1 n* J     * 获取队列大小
    2 ^' R" u! l6 S  p9 a6 K     * @return 队列大小
    ! Z7 a1 Q1 Y5 B# t/ E- i4 E     */+ f* O+ ~5 L, t9 b4 M2 z
        int getMaxSize();
    1 p8 g2 I+ ?$ A/ O& g# @4 R# ?5 r" h: M& f* a: h
        /**
    # c8 B3 p" ~! r     * 入队, R; r" K. ]1 X0 L* e
         * @param object 入队元素
    ! Y6 q# f: i( l: B     */
    + e( T1 r$ o  n    void push(Object object);* K& H, I, a) V

    ! l" r. b: i, y2 B7 k7 ^    /**+ b# X, O! r# n. E
         * 出队
    , J1 k4 V5 i& ?* p     * @return 出栈元素4 `, n/ ]9 w/ I9 @) c. O0 c
         */. ]3 [! Y" v( r4 X. i1 H" X- ^, `
        Object pull();# q1 a8 J. Y, j. r4 _! N

    . |, b- q- x, T) q: F9 f    /**0 U& b2 [. R' v2 {% c
         *  获取元素个数# ^+ \4 T! T" P, w. L
         * @return 元素个数
      I4 a& C8 Z, Y     */9 f: I: j. k+ ]. _
        int getElementCount();7 q3 w+ s5 ?1 B9 I3 F1 @* N( u

    6 }6 Z8 S7 N* a* ?# D, Z3 z    /**
    9 @- i0 g% h8 d1 ]     *  获取队头元素9 x2 i2 U, ?  ^4 L+ ?# h
         * @return 队头元素
    ; U/ j  E: f2 ~     */+ r3 G3 r2 O# v- s' y
        Object getFront();, B8 a3 r' v& c& g, C/ O5 b) A

    - a: F/ k$ A& y; k    /**
    . u5 ~: k: t- n/ p) y     *  获取队尾元素
    0 k* _2 i, j9 A1 k$ }     * @return 队尾元素
    " H/ T5 U8 W. d& o     */
    4 P% @" \3 I+ B    Object getRear();+ {. j1 S/ i+ p* z0 \& K/ M

    7 k) v4 P& c+ x3 ?7 [    /**
    1 {( a! J" M4 d! L3 J/ u     * 遍历队列的元素
    0 X# z4 Z5 _& C8 ~6 ]- w$ {5 b7 m& D     */
    3 {  R  n1 F: w9 Y+ B2 n! ^    void traverse();# u6 i' z8 _5 I  R7 S1 e4 [1 w, v8 T
    }. q1 \! C' a1 Q' C
    2、队列的接口实现! M. t1 s+ b/ Q5 h# ^7 p
    /**
    7 x3 _2 u1 Y8 D3 X% k * 队列的接口实现
    1 `  \' l* L, n1 t  p *1 k0 L/ z1 V4 x! [) a
    * @author zhuhuix
    $ H% Y4 P$ g* j  f% f * @date 2020-05-01
    0 a6 C/ w9 n, [6 ~4 D */- _# Y3 Q/ f+ F( `. M( H' `
    public class QueueImpl implements Queue {
    9 [/ B8 N  _9 n* d& n. c6 e% i1 Q: W
        protected Object[] element;
    1 U& X4 W2 U6 y6 L1 Y" g" W6 m2 \, p; j5 F6 a" t/ E3 r' Y
        protected int elementCount;0 p, A$ k, V) e' s6 k3 {. ?
    * U) y! w9 L$ U0 J' b3 t% Y. t
        //队头
    * W( {/ N( m/ Y4 e& W- w7 o' I    private int front;6 y. T% n; r0 _" {8 a9 Y; ?

    / P) O, f5 Q! O    //队尾
    * L2 g* x$ {1 l  I* F7 ~    private int rear;- }5 {0 V5 U" Z/ ~* s; ?
    " I% W! g  b* f, k, L+ Z+ z6 R3 [
        private int defaultSize = 16;' |, o( s8 n  N% q5 V& G2 ~

    ' o. N8 H/ M- j! a. D9 B2 W) c' h    private int maxSize;
    ' p3 O7 L% K" t* l; H8 z8 V' ^1 H
    ' O4 Y+ z9 R. K9 c    QueueImpl() {
    ' d% }0 `/ O5 r  k  S- T$ p% \        element = new Object[defaultSize];
    & l5 d- T) ]7 Q# T! E' C4 O        maxSize = defaultSize;
    2 w- O+ W% ?9 \6 w9 T, ?        front = 0;$ b$ _- g9 Q( h
            rear = -1;5 v, P- i# y7 p
        }
    , v: ?+ a  C5 U! {3 Z; y: h+ n* y4 h$ v% t" k( N6 _
        QueueImpl(int size) {
    & C  u& r2 A9 a' m, }5 v3 X        element = new Object[size];3 i* q6 S  U9 m
            maxSize = size;2 w) N8 X  Y8 o9 n
            front = 0;; q6 {5 ]9 t# T
            rear = -1;% G3 t1 _2 f1 H2 S0 c2 E5 q& @
        }/ r5 g5 f7 }# B8 `' ~$ r

    $ l& g/ m- l7 w    @Override
    3 n" k8 e1 w  a8 P4 ^    public int getMaxSize() {
    - l' k5 D6 l. A8 n) }9 S' C        return maxSize;
    3 Z8 L. r/ I4 x3 m  h1 p    }
    1 E3 D! i  i5 g( ~: ?0 w% y0 @% [' S: `9 `# C- l2 p; \
        @Override0 N5 J8 G9 Q; o, V5 h8 e
        public void push(Object object) {- i) W% @$ y) @8 w+ }
            //如果元素个数已经达到数组的最大个数,则进行扩容& s- l! s  N- v+ n% [
            if (elementCount == maxSize) {  |. l7 \0 B3 [% R8 |- {8 b$ ?
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");2 p6 i9 J* \( N: R; C; m
            }
    7 X6 O' ]# r  ?! P4 p/ K  g* V        element[++rear] = object;
    9 D. F! t* @2 I$ u+ G( u% l, w5 y        if (rear == element.length) {& @. t$ D2 e$ k
                rear = -1;
    4 H8 L$ v6 Q5 w        }
    9 j* w" P7 p9 q6 X% S; o" }        elementCount++;
    8 K# ]8 }/ i+ J3 z1 z, @1 O    }
    # S# E8 ?0 @- G# U3 }, v7 Y% B' K* W& \+ P/ {3 E5 v
        @Override/ g# H( R# p* U; ?) h) A
        public Object pull() {, }. I# O( m7 l" S
            if (elementCount == 0) {
    - ?* Z! c2 W8 |6 ]# P+ H            throw new ArrayIndexOutOfBoundsException("队列中无元素");+ H+ w% }) @& Q9 s, B
            }
    , w2 ?# e3 `2 N2 i. E2 F: v& n' q        Object object = element[front];
    & U4 q5 M2 F9 \: r# N+ ^% L        element[front] = null;
    : n# h6 g" k+ s$ u$ c5 Y  s        front++;3 {0 [) P* x/ D. k
            elementCount--;2 F4 p7 Z9 Q' \( {6 x7 ?- r
            //队列清空,队头队尾恢复初始值0 e- p, O& G/ n5 j) q0 ^( N& X
            if (elementCount == 0) {% `; a' e) m5 d0 g3 d
                front = 0;/ m$ Z) ]! D7 G; h6 R
                rear = -1;
    : x9 G1 A( |2 Y" m$ B# G: g        }
    0 k2 g7 T" g9 L3 y        return object;- Z1 w; m  i, V7 z0 a& L
        }
    . ]" G. G4 x6 t$ ?5 T
    : T" c2 P0 T8 F; |0 g& L. e    @Override, G7 d) ?. B% h6 g# D
        public int getElementCount() {
      \, P/ }8 q+ w) S( n        return elementCount;
    ; ~; V* \1 k3 x5 o" C    }7 h/ x( [/ N7 B. y; F) f

    6 H% B$ O) d$ b1 U& q( e6 _) F    @Override3 \6 F- g/ c1 `% s3 X, q7 P" F
        public Object getFront() {
    0 J5 X" o+ _9 ~        if (elementCount == 0) {
    2 ^7 B* m6 z" \7 o; f" s            System.out.print("队头无元素");  ?  r. w, ]/ h6 g5 ^0 H5 v, N& g/ k
                return null;5 x+ r$ P( t4 s0 m- c
            }
    5 Z0 W. E) g% Y" J7 f9 _        return element[front];
    ; o1 ]! Z9 Y2 X( d$ X    }7 }7 ?# C7 f0 c
    " d3 G6 ~9 ]4 ]" o5 l
        @Override1 T! t7 u' b$ }1 b" W4 G. [6 I
        public Object getRear() {
    7 ^; W1 T% L8 @2 L        if (elementCount == 0) {" r0 t' ?* Q7 W. ]' F& c; P: k) F
                System.out.print("队尾无元素");( g, Z5 v! c" H( M7 `7 [
                return null;# d9 s; D3 k. l" i3 z* W" M
            }: ?+ H6 p) z' i
            return element[rear];1 C; y9 W' j# q0 W
        }" M9 S. w% E  L" Y

    4 W; T- ]; n; d; C5 L5 z5 J    @Override
    ( R; F+ Z- v" {5 |) M. J4 M    public void traverse() {
    . f' m1 k2 {  n5 x' E8 v        if (elementCount == 0) {8 j4 v$ `' H, _/ }; l' F$ ~3 z! ]
                return;+ J* q; g7 `9 |; B  o* X' R
            }5 v4 z5 y+ A0 n# F3 D5 K
            for (int i = front; i <= rear; i++) {# l6 S" j8 Q" A4 c3 [& T
                System.out.print(element + ",");
    2 U; [5 n' f) r+ i        }
    ' l% U/ ^  K0 h. L# }* h        System.out.println();5 W5 J7 I# }, G" ?
        }
    + D& R' \* p3 ~' ~9 @- B2 \% F}
    / |5 y+ k4 c. D) u0 h) v8 o- H2 v  F
    ) a3 j1 ]5 {9 D/ z. g2 _9 N% x5 z6 T8 N- q+ _5 j2 R) D' b  @1 D2 U5 f) M( U
    3、队列的测试7 n9 M2 @, K4 S3 C
    public class QueueTest {
    ! y. E' z4 n6 b5 j    public static void main(String[] args) {/ ~! k( w1 m" B+ j6 i# O* M
            Queue queue = new QueueImpl();  @' k/ c# ^* x
    , g/ D1 T1 U! H$ F/ E
            //获取队列大小
    + A3 V! B% A& |8 [/ R: O        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());9 E- x. b8 {' f" W# e- z3 g+ P
    9 R0 S: V' V4 p& T! l1 w
            //第一次入队列:压入1-15
    / C! G6 a9 g/ Z: a/ B: X$ X5 g  M7 }        for (int i = 0; i < 16; i++) {
    ! m- r# d7 J; M7 k2 O/ B            queue.push(i);
    ) ^% k' Z8 k2 y        }
    $ o8 D5 N2 j2 b' ?! |; |        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    9 h. m' _# _# Z; A        queue.traverse();. @9 U' D( }$ M! F9 g# o  u
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    - G- h. t* t$ D- P, D" Q. M# L7 _. B' y" k; P
            //第一次出队:取出0-15# A8 U# \' P) }8 r0 A1 j) ~
            for (int i = 0; i < 16; i++) {. Y4 E" n' k) D3 s
                queue.pull();0 u5 n$ U- o6 x% S2 N" }
            }& w8 Y+ Y0 u+ U
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    ) N6 z, p# }* x. R  g& y# D        queue.traverse();
    ) _$ A' E, r3 H: S8 Q0 E- G: \% I        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    # ?8 @7 `0 |( {8 M0 r$ k
    4 Y$ H2 |% k1 D; a. z3 |* @
    / t# h! Q# G& X" @! H        //第二次入队列:压入16,31
      r9 V9 m) \$ P6 P! h! J3 g2 o        for (int i = 16; i < 32; i++) {
    3 T+ ?8 m2 ~$ R. L, S# L            queue.push(i);7 u) F/ f$ O2 G& p0 z
            }, O1 f2 ]2 H7 z/ p: p2 L7 t
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    % J* F* N; `8 k/ A        queue.traverse();
      K9 c6 `7 J, G2 |7 z' }  \1 B' j& |7 e9 W3 G

    2 q& q% H# X+ i; ?        //第二次出队:取出16-31
    , D3 M! B  B0 Y" Y4 x/ q* P        for (int i = 0; i < 16; i++) {, N9 G1 z& H# c
                queue.pull();
    9 o+ m2 I- t8 c        }' \* l! o: [9 C1 x# C
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());" N5 u4 X0 B8 Z
            queue.traverse();' D* P; G8 T! K* K' ]6 q: i' I
    $ _$ f% _! V6 J  |0 o0 o! d/ ^; ]
            //空队列出队报错6 N2 G0 {/ l, B  K  }7 i
            queue.pull();- K7 ~9 r, I- @+ H* R3 O
    ; Y# ~- b; n, Q% d' i
        }
    ' p$ W  ?7 F8 r8 R$ R}' G5 z( Y1 H: m! |
    4 v& n3 X& n) P7 K$ L
    % L3 Z; J( Z, y; Y! y
    8 {& x, D) w' _7 d

    8 Q1 X2 W4 `0 G/ `* |' P. J5 G" L3 J8 _3 u5 r7 R1 [
    6 D- Z$ J4 q9 v  J9 V' X8 u. g

    ! }8 F3 Y' {& ~3 U+ h9 e5 e& i
    $ C: f, r# P5 s: c4 a
    6 \+ K+ {2 g. x0 S
    ( s% e% c  Y% ]* e9 W% r; k' e4 @! k- X5 ?( }  g7 T

    - n9 C3 [: j9 _1 D" q) N! N" L+ E  p2 Y# k' c% K2 `* D

    & e5 H1 p& n- |2 |- @4 i! ^& ~, j" M9 j3 w4 n
    ————————————————$ S$ c; L- U8 M- ^# g( i
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    : m) a9 y' b/ }8 N  q9 i原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    " D( D$ U  U& L- ]
    4 E8 U4 {7 G: J2 F% B( x" e4 \) a* @+ v- _7 `
    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-21 18:48 , Processed in 0.473127 second(s), 54 queries .

    回顶部