QQ登录

只需要一步,快速开始

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

      @4 v0 p- K5 x0 M; [" N  m数据结构——栈(Stack)与队列(Queue)的手写实例. i' ~& f) |, J! ?, J

    " G1 C) |; ~2 W% ^* _0 g6 y7 k[color=rgba(0, 0, 0, 0.74902)]文章目录
      / `* l" ~, i) ^3 K+ v
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        1 c8 K6 _. U$ Q) I6 G! o; A2 d! G
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
            h4 l2 Y# ~' V2 D: m
      • 三、 用数组实现队列
        ! O8 |# R& P0 J. G* f; T
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          / m6 }8 N( l: y# S. X

    + Y6 Z( o' |  M# a* m- B, e+ d, n; }$ B- e5 j5 O/ P5 O
    一、 栈与队列的定义- T" ^1 A: D6 p4 a8 P, _& R
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    . a1 H! ~# A% ~3 ~* x' T 1.png - ^: z/ K' W5 {' _* R  b$ _  T
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。. J% ]6 j% f6 P
    2.png 8 Y3 n" i6 K- }

    % m9 R7 z) I  N8 H7 ?6 e+ x* c( f# {3 Q0 h7 T! m; h8 x
    二、 用数组实现栈1、栈的接口定义1 O' ?3 l( p5 C4 k3 A
    /**# T& d8 ?8 k6 h" k/ ^$ i" Q
    * 定义栈的接口5 ^* k% s  Z7 _# B$ N
    *
    ) N# p2 l( P2 l9 b: S$ R2 Y+ q * @Author zhuhuix$ ^  [% t7 M. I! S
    * @date 2020-05-01
    $ H+ P% l% l4 p( u1 s */: }$ [$ h5 w! f- r4 T7 a: p" O
    public interface Stack {# \4 @* R! P1 v3 ~+ M/ e4 f' d
        /**
    & y; L  Q4 {9 b8 I     * 入栈
    + A- j3 Y4 V0 r, U* n     * @param object 入栈元素( P+ W8 [+ K; o' \, g
         */
    $ D8 d1 x) m; j; P! X$ y, m    void push(Object object);
    " K# {# ]& f/ l; |5 z3 O/ u. N2 w( v' n/ ~0 W
        /**
    6 L3 ]- U- j5 L1 V     * 出栈% b- x3 U" I! E) F) v+ P
         * @return 出栈元素  [1 |& @6 q" F4 }( s
         */7 |" t( i+ ?" C( H& M$ R
        Object pop();: C; J. J# X9 e1 C( ^+ v1 i
    - n; N/ x; Y* j" _. V, ~7 _0 K) n" ^4 K
        /**) C7 J! R0 V- B% \" x* V
         *  获取元素个数
    : u& J7 P5 ]7 d& a+ g: l: `     * @return 元素个数
    " d2 f* ^6 p* P7 Y- v     */
    6 y1 }. {8 V% R    int getElementCount();4 q9 m7 s$ b' s6 ^8 u- y

    ) r" t/ i9 j4 K4 i. x1 }    /**+ J: K; N: P5 S* F( B2 g; ^# n% s
         * 遍历栈的元素/ `+ \6 h) x9 b; K7 \8 P6 |
         */  K( u8 v$ m* L2 V9 a; w
        void traverse();0 y1 Q9 u$ U- N7 |& `: h
    3 t2 ~% C4 n6 K# u; `
    }' u7 K, u) O9 L, W7 j0 R
    2、栈的接口实现
    ' D) e0 v, A) _( @! e/**0 {1 n0 B. O4 X$ h1 v2 O
    * 栈的接口实现: N: s& U6 J% y' R6 ]1 |
    *
    ) J: x' B3 Y% n1 ~/ h * @author zhuhuix
    " a, u. ^0 p# J& y) Z. G * @date 2020-05-01
    6 {+ q, {* f! z3 [- s */
    - S6 c3 r: G  f9 H& A  M1 hpublic class StackImpl implements Stack {
    % G1 K: y7 G2 L* g  V* I8 {* p8 v       
    0 ^5 k) A* P0 S7 C0 |    protected Object[] element;
    . c, y9 X0 {( Z7 R+ }) D: e3 T" L. q1 {0 Z7 u) l, f5 ]8 j
        protected int elementCount;
    3 w, I/ u$ i! Z8 b6 H
    % G8 r$ R+ A0 C    private int defaultSize = 16;
    ) E0 `4 v$ |7 t9 d  Y6 t
    4 O2 v8 Q5 I! B1 g    private int maxSize;
    . T) h3 x/ V+ @8 T+ p% I  B1 O) \4 I3 I9 T# M) L% X# N$ E! t
        StackImpl() {) ~3 t6 I4 b4 i
            element = new Object[defaultSize];
    # o" m% J4 @2 V6 w1 G        maxSize = defaultSize;$ r: R# N5 g+ G# }% k% H2 P# K
        }& Y, T. h" X; J; d# M. R

    8 _5 y0 @$ M4 A& e. B2 r3 ~    StackImpl(int size) {$ ~+ n2 a2 B' T( Q9 i) Y' N
            element = new Object[size];
    - {1 q5 G; t, J  E" |; Y        maxSize = size;0 r2 D# V0 O6 p& x$ R
        }
    9 l* T6 j0 d" G8 M, z& @
    * J/ d* c4 P* P( c* V    @Override# `% a, e8 W3 \$ y
        public void push(Object object) {
      B4 K) N( @" [% D2 t        //如果元素个数已经达到数组的最大个数,则进行扩容" a/ g. I$ J, E* k
            if (elementCount == maxSize) {
    2 j5 I. M+ u5 N% U$ Y) U            element = Arrays.copyOf(element, elementCount + defaultSize);
    % c6 X- P) D/ ~9 X& F+ P& G        }# U5 Y  {$ _* x  R2 ]
            element[elementCount++] = object;
    4 s9 ]' s3 I- {4 w
    3 [) h0 G  ^1 K; U2 ^7 U7 Q    }2 Q* n5 R6 P$ K/ \
            // 本代码未实现数组的自动缩小,具体方法可参考JDK4 i& R0 a9 m( A
        @Override. C6 p( m+ h* ]
        public Object pop() {2 U, g/ {1 l- R9 T4 N
            if (elementCount == 0) {$ w6 p% {- S0 S6 t* r
                throw new ArrayIndexOutOfBoundsException("栈中无元素");2 s# L9 g* G( ^9 C+ `( S5 x. ?) Y
            }
    . G$ y) T+ K6 p( E& n9 {        Object object = element[--elementCount];) p& r  N  x) Z! c: }* W  y$ B' n
            element[elementCount] = null;# y: X7 I$ v" D+ Y; y8 A
            return object;: O' H& ^7 X' {) ~7 a" U7 S
        }
    3 z' d1 `1 o# V, W' Y! O3 r) O, h9 d' W
        @Override
    * h6 P2 b- P; {/ D    public int getElementCount() {" Z! j7 G; G9 V; N# m' F3 F5 h# |
            return elementCount;8 W. O! z' t; L2 U
        }
    ! @$ H* F& o& c
    & T) ?, ?; _6 {5 E# i6 ~' q    @Override
    * f  v" ~- s3 b+ ^8 O! k    public void traverse() {! u$ l# r  @$ x" O2 A; ^/ x
            for (int i = 0; i < elementCount; i++) {
    ( n8 q' i! p# W, |8 o9 r4 @: u            System.out.print(element + ",");
    / S+ J% ?* M. }2 @        }# X9 u8 @7 X/ \% R: h6 a; X
            System.out.println();9 n# N1 b8 }0 m# i1 V
        }: d& d2 |: F& B6 `5 Y( ]4 b, R& D
    }% ]- h5 h8 g5 A. R
    3、栈的测试
    ; o6 U) Z# e$ H  ?3 |" R- wpublic class StackTest {  @- s$ v1 w5 s, E* ]
        public static void main(String[] args) {
    % V9 X& S5 ^& ?4 h: p& i1 p6 F8 ]        Stack stack = new StackImpl();! g# n" M0 y* }. f, {  H5 R$ n
    * D) _7 ~) r* Y3 |" y. \
            //第一次入栈:压入1-159 _+ q. f) l5 y
            for (int i = 0; i < 16; i++) {+ O8 `5 ]0 i6 W* @
                stack.push(i);
    - y1 V$ v2 q" Z: K% Q- n        }
    2 s9 W" n# p! p$ R6 |        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());' {$ l  u; n5 v; z( v
            stack.traverse();
    2 J$ A( H2 i; K0 |
    & A' R, b/ Z* r+ N4 q, U- {1 i* P        //第二次入栈:压入16-31
    7 w5 |' b* e7 _: W        for (int i = 16; i < 32; i++) {+ g/ M  A: F; J1 T& Y5 \
                stack.push(i);
    6 @$ r# z0 y; P: O, _        }+ j( e* M, U' u0 k
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());$ @* p8 H; K( v: ?0 U& B# P
            stack.traverse();
    ) u( D: n' r2 a, _' ?5 O  }' H5 E9 ~8 q% d% N# b1 Q5 N
            //第一次出栈:取出31-16
    ; R" C1 B* Y# Z4 ~- I9 I) `/ {        for (int i = 0; i < 16; i++) {
    . b% {# \& V+ J! i- H& }, B" h0 [            stack.pop();
    + v* S: }6 Y0 ~, ?        }' z, B) R/ v! q, O/ q' E
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    5 v# c1 i% d! Q+ c" B+ F        stack.traverse();
    / O6 W/ h/ e; @) }+ `( ]7 v6 Q
    0 ?3 @) R# F: E/ {/ j/ `        //第二次出栈:取出15-0
    9 J) d- U1 U/ x+ ~- S7 A- E" f        for (int i = 0; i < 16; i++) {: b3 A4 h: l# X! F1 x0 }
                stack.pop();
    ) L# ?7 x/ G) c) @( ]0 v9 t        }, R7 {; H: U1 _1 w3 c) ?3 t
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    + d& z& V3 g% \' W6 c( Y8 x8 @# ?9 Y7 a; q        stack.traverse();
    & _( L4 _6 u( o2 L+ o5 X3 _/ ^
    2 r, e- R! ]- A6 Z& G. T        //栈中无元素,出栈报错
      u2 E& c! Q( \, a  n8 p. q        stack.pop();9 X/ m$ g' g  c& V: J. w, I3 T

    , u0 O2 B* M* P- d0 H    }
    + f! L5 ~3 R  z1 y}
    6 {6 a+ m% a- B 3.png & y% j7 P, o8 P% _/ E
    / Q7 p5 }8 Y5 Y7 Z
    ) r6 R7 @0 X9 l$ g
    , \% F2 b5 W9 ^% |$ y" o
    三、 用数组实现队列1、队列的接口定义3 N; P& H, V! e: b6 A# v  A- k
    /**- Q% F" z6 E0 Y! q
    * 定义队列的接口. O" Z, V  I  `1 C! P3 b5 A  M* M$ |
    *
    # n0 }* Z* s; K4 c  b. R * @author zhuhuix
    0 K$ c* q+ ]# K3 T * @date 2020-05-01
    - y) j; I0 z$ a) J6 d */
    9 g5 {. S+ r/ p7 r% Dpublic interface Queue {
    + _) w6 w- K! F. [  c$ @/ A, w# `" P, @6 }! D
        /**% Y4 w. K8 B3 e5 q! `& f
         * 获取队列大小
    ( b0 F/ a( K! x. ^1 r     * @return 队列大小5 _% f$ Q# z8 h+ F% G
         */' \3 l4 p9 C' S
        int getMaxSize();. D; {5 w8 D% ?9 {2 `8 {6 y) o4 K

    + h2 ?" M* W0 H) }    /**
    " Y: r, h/ f$ E' z     * 入队, M2 t* F2 B2 v8 u
         * @param object 入队元素5 ]6 I% q: W+ ~' x1 O
         */
    9 B: I  [- K4 F1 _4 y. [: |    void push(Object object);2 |5 r1 A& G! \* D  h) c$ A$ B
    - |, @, f8 S& k! f, E
        /**; U/ F; o  J; [
         * 出队
    1 n+ [  a& q* O! Q! b3 K' A     * @return 出栈元素5 R2 `4 K3 F! m# a
         */  a" \6 X% `9 s. B
        Object pull();
    , t3 \. C! G) K* }
    1 a! Q. a5 @5 B6 z" B; g7 P. J    /**
    & n' l, o( s7 a; P% I" K2 r8 J$ r     *  获取元素个数
    ( m  N- D) x1 E+ a+ ~5 J/ u     * @return 元素个数
    7 E% `4 g6 p7 d; U     */' o9 G. p2 g% G3 u
        int getElementCount();6 n) @; s8 p4 O( J
    - f% ~- j/ s0 n5 R& X, W* Y1 t& b
        /**
    - }- }# N4 Q$ Z     *  获取队头元素
    - T/ B9 z2 H0 D0 Z     * @return 队头元素
    " a! j% g" |: f: ~- `; _# |     */' Q, G8 h/ U' D: Q. x" X
        Object getFront();
    ( j6 u3 p4 }7 x/ v( @' a/ L) K3 u
        /**) \8 ~" o) H) L) }) \
         *  获取队尾元素7 J) Y. d8 z% d. U1 V
         * @return 队尾元素) F6 z0 e& y0 b' H$ Q9 E1 Q
         */
    8 k6 |( l3 t$ _- M0 i: Z    Object getRear();- Y% Y1 V. S( Q' o' G3 d

    / h4 `6 q$ z& v3 W$ ?3 d! ]    /**
    6 D8 M( v2 _6 S  K' r     * 遍历队列的元素
      M/ b! s1 H9 h# @) ?     */* ^6 J0 a) G2 T) U4 F! l
        void traverse();" N0 Y' e. h% S, @& l/ F% ]7 k4 X
    }
    1 x6 T$ H: L1 V4 p2、队列的接口实现
    $ }, L2 m/ N9 i4 y1 ~$ [5 c" p$ [3 N/**
    7 q1 n) B+ H; c3 ^7 }; J * 队列的接口实现" V# O- Z5 O1 i- D
    *
    ; D4 O+ H# T$ c) Z- q0 Q * @author zhuhuix. G6 W( O, l) X: H
    * @date 2020-05-015 ]( y3 i# O! r8 O. F4 C
    */
    # X. e6 X$ v3 Qpublic class QueueImpl implements Queue {
    1 T# U  \5 H/ ^+ i  b+ u8 I- r
    + [4 ~2 [- ~4 v+ i5 E    protected Object[] element;& o6 C9 {" z+ e5 M. H

    " E8 ?" D( u/ L$ H8 s/ y& ^  ]" j    protected int elementCount;
    3 T2 {9 ]3 w$ u. U! S  Y& Y1 i! N& f2 I% R7 w" Y8 ^7 ?/ p
        //队头9 h+ Z; l  d3 U2 }' R8 m
        private int front;7 \  E5 d0 X( m  O) ]
    ( @3 f) _' b8 }) R9 l
        //队尾
    ; B2 \/ k  i1 a; T4 N4 i7 u    private int rear;* _/ k+ j) h2 i$ M3 P) T

    + _2 v9 O. X4 S1 r3 \    private int defaultSize = 16;3 c& u& s+ m* |& y2 C, v% B( |, B

    0 E+ k( x. ^- {, I    private int maxSize;
    ) C% n, T) A0 C
    ! j8 \+ \0 r; o' M, ^7 J    QueueImpl() {* \  D, F! W( J) G/ S
            element = new Object[defaultSize];
    : j& b4 H! y0 l; s% S        maxSize = defaultSize;
    , R' {) `9 ]6 |9 a3 }( ]2 f1 j        front = 0;
    ; @3 p: D2 J0 @8 h  R' b9 Q. h        rear = -1;+ B! H; ^" l! J6 h
        }* q' g( N6 Y, G1 X4 u* C9 Z

    0 W2 \* W( M  a+ @6 l& O5 k- `; R    QueueImpl(int size) {" U! k  c  F% f
            element = new Object[size];
    , n6 F9 m" x( `  x7 l8 t        maxSize = size;: B) Y9 |# f- a. b* G4 }
            front = 0;+ |- E% z8 X6 K
            rear = -1;
    # \( d% E- `. q    }: d6 |3 @  I  {8 v+ g3 a9 ^' W

    # ?) f8 u, s! o5 |* l( ^' V    @Override
    ( I; c: T8 p: ?    public int getMaxSize() {) L& e! y, h! |% U: n3 L
            return maxSize;, t/ O3 B9 `0 i: E
        }) `( h! ]# u  J  p! a: ^5 K- i9 Y
    ! j+ |8 j3 I8 m3 p
        @Override
    % T# L8 W) G9 j" [& I    public void push(Object object) {
    % k9 Z1 w9 j0 p! F        //如果元素个数已经达到数组的最大个数,则进行扩容7 n7 Z- m# c8 `( e8 E
            if (elementCount == maxSize) {' l3 [! }: ]& P% B% R. G
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");" V. ~% n- X: C0 o4 e' P8 h
            }
    " g4 d6 p& Y$ {( _5 G% c# ~5 N        element[++rear] = object;+ C0 @+ P4 m- H& i
            if (rear == element.length) {
    6 j" q# H: o' v% ]            rear = -1;: X( I1 Q" n4 @0 U2 c
            }
    : p" q' z" o' \* H        elementCount++;. I8 l/ T4 K0 k3 V5 D' b
        }
    : f% ~# I/ c; A8 _5 Z/ Q) r& W" P+ D8 S2 R. ^: t: m
        @Override, R8 y, i: ^: R; E& L3 n
        public Object pull() {  I. Q# G5 Z% V: H8 O6 K
            if (elementCount == 0) {; z" N3 R% o4 H' `7 q
                throw new ArrayIndexOutOfBoundsException("队列中无元素");) @: ~/ t2 M9 X2 a$ @
            }
    $ R7 `# K, K* w; l; j" g1 z7 b' K7 @0 z        Object object = element[front];" `6 G4 |" \/ o" E
            element[front] = null;
    + \' X+ ~( R$ W" g3 z& k        front++;" I6 a: C# p8 k# r$ X8 b* s
            elementCount--;
    % \+ M- c) x3 }, }        //队列清空,队头队尾恢复初始值! y! e4 f" r3 S) ?: r' C  F
            if (elementCount == 0) {) N! m/ n4 `9 f% _5 J1 K+ y
                front = 0;' K# L  v# L! X/ O/ {$ q) Z
                rear = -1;
    ( z4 m# M0 @; z( g3 |' u        }
    7 ?& X- Q" {, Z- B) l+ J        return object;7 K8 |: ]8 N$ _
        }
    ) ]# I' G+ y0 a: n% W# M- S( F3 L6 l# n; K+ I& z5 L" ?
        @Override/ l5 _2 n( x0 f& ]2 [
        public int getElementCount() {
    1 X/ C8 @5 {! I1 B- I9 E4 C        return elementCount;  C4 D0 h, x2 h" b
        }; O2 ?( o, {% Y. t% ]

    $ Q, i0 I4 @+ n0 |. `  Q0 E; [# O% X0 m    @Override
    5 z7 p- W& e1 r6 E2 o% d2 ~; ?9 [    public Object getFront() {
    * Z4 z1 {# S9 P7 y0 ]        if (elementCount == 0) {
    5 p' E0 P0 p* P            System.out.print("队头无元素");) h9 M2 `& f8 F$ t, g
                return null;
    ( Q2 I- L6 c3 w# _7 U" `7 j        }
    0 [$ h+ Y% X) j  l6 \$ |! H        return element[front];
    - L3 u% j4 o/ G1 ^+ V    }0 {8 h0 o: ?4 T1 P9 p1 `

    , b: B7 N' w: B    @Override
    1 z8 u  l! _1 ?$ R, G    public Object getRear() {
    ( ^7 D- c1 _1 W; h        if (elementCount == 0) {/ _' M3 T8 `- h' y. J2 ^
                System.out.print("队尾无元素");. |+ z; Q! L$ m6 l
                return null;
    $ C. B' l4 k2 l        }1 O" p; \' N, W- b
            return element[rear];
    8 l5 M% y0 G  c+ A8 V+ Y3 h( s2 s- F    }
    1 B6 P: u- @! E% D- `) {; |
    ; n. |- w+ Y* h! K/ e    @Override, n+ f1 C2 D% D/ L
        public void traverse() {
    ' {* X; m$ i, x; G3 H        if (elementCount == 0) {
    8 @) y! s# \. p& I            return;
    , a) {7 Z$ ^1 q3 |7 B. _        }
    & ?& v2 `2 D: |$ u- r( t        for (int i = front; i <= rear; i++) {
    7 H  E  T4 f( ~$ C# T+ _4 r! j8 m* o            System.out.print(element + ",");
    $ x9 N9 M0 \: \( {        }6 D+ F, J0 h/ n+ c0 J$ o
            System.out.println();
    . r$ }& m; c: ~( U; b# B6 E    }
    : W% @) j0 W! f* u5 s( f/ ]  c}7 C( e  ~4 z( H; l5 M( [
    , D5 l9 O- K. r( X
    " F. P5 w6 }. _4 f
    3、队列的测试. U4 A) u  a; K$ W5 H- r& g
    public class QueueTest {
    % K% W5 O5 X1 `8 b    public static void main(String[] args) {
    9 t* G3 c9 s6 I# s& P# T4 T! M' ]" T, I$ q        Queue queue = new QueueImpl();
    2 u* _! c  H! o( j6 r
    * n1 V5 e. s$ M        //获取队列大小: ^- {5 ~' e* |/ z7 y; Y
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());* M, U0 T% c6 r9 f$ I

    . C- Z' L2 \5 c$ L7 B        //第一次入队列:压入1-15
    ! }2 Y1 f' ]1 N* m7 R2 |        for (int i = 0; i < 16; i++) {
    * E" y4 k$ \% E& X            queue.push(i);
    # r; o0 S7 H/ f& V' s8 z& h        }0 s8 R6 z0 G8 l, z2 f+ K
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    + `! u/ Q( O6 N! r        queue.traverse();0 y9 x# M1 ~) E
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ; X9 Y- G& z9 P# d& l* j5 |" p. O1 |* M# z1 R* @
            //第一次出队:取出0-15: [0 `" u8 r8 R, ]# H# U
            for (int i = 0; i < 16; i++) {1 {7 W4 p! O3 A
                queue.pull();
    8 b3 j3 v( o4 J; G# y; `% O! N        }
    : q5 c+ T- b+ f( V0 {! p/ r- M# s        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());1 s6 U6 w: t5 q) T" p4 P
            queue.traverse();' G# J  Q; s% q  F" \8 [: T5 Y
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    0 r! p0 X  o+ W0 E# Y* S; n0 K0 S* e$ y- w" p

    ( q5 A. K( J1 F/ A* z        //第二次入队列:压入16,31, l  q/ k+ `  e" U
            for (int i = 16; i < 32; i++) {
    , J: w0 o) O* |+ Z  T* m- {0 U            queue.push(i);
    , W1 C% s; Q3 A  H) O: l        }* _+ H6 r1 w5 [7 Z
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());! M  H# E2 z" l# `6 n
            queue.traverse();/ @: |# U4 Z; {. A4 D' e2 h

    / |2 i" p' T9 K  R0 E0 Q3 w' G- \0 l6 ^# b6 O4 {
            //第二次出队:取出16-31% c) F! ~, q" l$ Y9 d5 s$ f
            for (int i = 0; i < 16; i++) {3 G, k7 j1 t; x) y
                queue.pull();5 c1 X$ Y) I3 n9 ^2 i6 R) R
            }, v! C2 J" l! m1 r5 W8 [
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    2 S1 P+ X+ u7 ]' Y8 a+ \        queue.traverse();
    * f3 _! K4 i. h/ W/ ^, E/ n' p; _& k8 h" @9 x% K
            //空队列出队报错& V3 F# {0 Z8 D. x5 }. V
            queue.pull();. y, {5 ~0 F3 {
    ; s/ o1 ?" ^+ `
        }
    / H& ^) M5 ?/ @}
      Q4 x. V' ]$ A& f9 U4 ~5 @) `8 A9 Z
    , g( `0 U$ M8 N& }$ l5 `

    1 ]2 W+ T5 T7 J' V( N  \
    2 B/ m/ U  J9 ~2 {3 Y
    5 z% |" s  u8 B  q* k$ S8 b
    ' H( K8 s; d) c- V$ f* v* _! M8 p0 P: d
      j+ d8 |6 o" f. E% j! x
    $ L* m, W# s- k9 M1 W

    " m" d$ X4 n' J
    / ^7 `5 T  L" L2 b4 c2 M; U, G0 _* J' ]
    4 d6 C: r- G1 g+ L, z7 f4 L
    . N1 z: @& q9 z
    6 I7 }% P! H' x$ y# e8 V$ w
    ————————————————5 E) ]" p2 y/ m" P$ q0 |+ V
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    " n* O' |! S; |9 Q* j, p原文链接:https://blog.csdn.net/jpgzhu/article/details/1058767854 N. m  f7 u6 a- n5 g: p

    ! h2 D1 n4 p) y' a3 M1 h! e# T- _3 Q0 D4 A. s% c. L+ n1 f
    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-7-25 05:43 , Processed in 0.469129 second(s), 53 queries .

    回顶部