QQ登录

只需要一步,快速开始

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

    ( K7 z$ B* y2 l2 E1 [% y; t6 }数据结构——栈(Stack)与队列(Queue)的手写实例3 n& |/ o0 \4 b3 T$ b
    " N4 j9 r: E0 r) B. K
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      $ j# W/ X* a9 b0 g, O* r/ Y  I! L( C
      • 一、 栈与队列的定义
      • 二、 用数组实现栈- B6 K; c+ P2 a1 \4 h  k( s) B
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试- a8 g: J: Z3 \. g' N5 t
      • 三、 用数组实现队列( a1 R$ l" R* K4 C1 w; v- f0 t
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          ( j# h) ]7 I- `

    / C$ U5 J" N3 M9 m! E
    % ~, k$ Q7 A- n: D一、 栈与队列的定义
    7 E  p, X# c6 d5 c; Y) X栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    5 T6 Z* a! @; J- b7 n 1.png ' J9 Y4 o, V/ Y( _
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    . m7 w/ ~4 J- T& k$ j9 L) p 2.png ! C! B0 e0 K, m6 i0 L7 c4 B& ^

    * o4 R) {3 `" }2 y. q0 j) A- y+ J" x2 ~/ }$ X
    二、 用数组实现栈1、栈的接口定义
    ; o* X6 t* j9 f( j$ k8 ^! C% D/**3 z4 G5 h1 R; `1 l: R& R
    * 定义栈的接口% o/ F) {1 N" b3 m# B, \- `( F: S
    *
    - |6 V6 V0 \' E * @Author zhuhuix
    . b5 N7 G6 q; @& z * @date 2020-05-01
    1 r/ H+ ?( C3 y- n* |/ p */
    & {1 A* B8 i5 ^- E* `3 {public interface Stack {7 Z, B( [1 l& G
        /**
    1 g& a3 f& K' `7 c3 S     * 入栈
    ! D, x! V2 ?/ t, C     * @param object 入栈元素
    ; z" E, ^8 [; O2 `     */
    * z+ t( R+ T9 p3 K: k% S8 |1 F( q    void push(Object object);
    8 o; x; w# S) C
    ) P4 g% p8 ]4 q6 O: r! i8 W    /**
    ) }4 H: T% K  z; M2 r     * 出栈9 N6 p3 ^1 b( r3 {  C
         * @return 出栈元素
    ' M6 E2 L) ^. z; g3 x* G! X* Q     */5 A$ ?# Z8 H; k" Q& M3 |, w
        Object pop();7 r8 y& e, h( P/ A

      |. f- z2 F) w    /**  I, z8 i+ h7 W0 {! R( t- _
         *  获取元素个数
    * ^: f( m  M% P& I. I4 e8 p) O, `" Q1 b     * @return 元素个数
    * H2 F2 g+ v, |. i' ~% R     */- Q; X: W9 _; u6 Q
        int getElementCount();
    + \+ q0 W* O' V4 n8 _1 S& w
    + |* {* v9 t' ^' @    /**% Q  K. Z# E+ Y5 n
         * 遍历栈的元素
    / |7 }; p3 y+ G/ [  Y7 B0 m  s     */& G7 ?; @1 M4 f$ t
        void traverse();
    ( {+ G  g( J! v3 h, I; X5 X5 _. V# Z8 H
    }
    ) s' \; n; Y" t% F1 g; Y# U; y- U3 U3 p2、栈的接口实现
    6 i$ r& F9 T- s# d/ `4 Z/**, a! ]' }' J& f1 u7 e9 f
    * 栈的接口实现, X; B0 B- g$ h. `5 o
    *
    7 a9 D. C4 M' a4 q * @author zhuhuix
    / @7 d0 m% G6 T. K: u: @2 u! V) e * @date 2020-05-01& r- ^+ n1 i4 d+ U, [4 f8 Q
    */7 G: s: {. S( w
    public class StackImpl implements Stack {
    3 y/ U& W; ~5 O3 ]( X; w       
    9 T) x) I/ S% o; [- G) b    protected Object[] element;
    8 T) c9 ?9 _" y( X! s/ c8 J
    * _/ |3 e) r) ]4 c9 m    protected int elementCount;
    : h) O  Y1 |2 \9 j4 C7 z) i& ?; W! X) A. n4 g
        private int defaultSize = 16;( u5 p2 G+ p' {2 ]: [) i; S
    - G: O5 T* B) J& J
        private int maxSize;. Q* ]* c; }6 V8 i
    + _, L3 `( \9 R+ w; h: L
        StackImpl() {4 W3 S. I% w* P1 F7 h3 b6 Q
            element = new Object[defaultSize];8 d* l- c9 x" n6 p  \2 J2 q8 @- @
            maxSize = defaultSize;8 ]; ]+ E7 c* e
        }
      a- s0 V2 m  _- \) P' F( @" @
    3 M0 o- z# W: z& G. D* n    StackImpl(int size) {
    1 E/ [  u, `, V3 g% U        element = new Object[size];+ E: u- D5 L$ S0 H9 v, d+ m4 G
            maxSize = size;2 R6 R9 f, X6 l$ E9 U
        }  E1 ~1 |" W) M. ?- w; M
    ; t! Q, r2 Q! z! K
        @Override
    2 a! F7 k; B( O8 Y) c    public void push(Object object) {
    7 h7 n3 }! V; l" U$ D6 ^+ _: s. O5 }9 P        //如果元素个数已经达到数组的最大个数,则进行扩容4 K1 y4 E) ]: U! ~# H/ H
            if (elementCount == maxSize) {
    + O8 v0 Z" u+ N; Q% Y- B1 d            element = Arrays.copyOf(element, elementCount + defaultSize);
    4 C3 |. L: X6 W; J* Z        }
    6 @* ]( e9 j. S, I& ^0 d        element[elementCount++] = object;
      j5 Y8 z7 k1 J$ N2 z+ O% {5 o
    6 Q: [# c8 e( F4 r    }
      V% }. `( |4 J( t        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    1 y; G+ x# E1 W" Q( I3 k6 m1 y    @Override- D: ^! x; ?) J2 V- E: Q
        public Object pop() {
    6 v7 V% I2 J: O* i5 R/ d        if (elementCount == 0) {2 [9 ]: Y7 U0 ?0 i! ~$ H( w
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    . V' |: C' P1 O% F' L' F- O        }) h& e/ o- w) E$ l: l
            Object object = element[--elementCount];
    : \2 ]# Z) B$ e. J0 i        element[elementCount] = null;3 `2 {" \$ {- [4 u
            return object;1 l* S5 ^" K0 b4 C/ n
        }% Q+ s" i$ C' d& g; N9 S+ g# y0 ]

    - C. i: Z4 t5 y+ ]    @Override4 u( V- W0 O$ b
        public int getElementCount() {
    ) p/ o* w1 d' ^% X4 A  k        return elementCount;
    0 b, p' Z/ ~/ D/ Y) C0 B; w' C4 K    }
    ! o. p: G; @! G% P
    ( [( D" Q; a. y- q    @Override% E% _/ g6 C" r# j5 l5 a- e
        public void traverse() {
    8 a, l6 a  P3 a) s0 c; b        for (int i = 0; i < elementCount; i++) {. ~' u9 g" b6 N( |2 q
                System.out.print(element + ",");5 t# {1 i- j8 m* l' N( F  h$ O
            }
    5 ~& n/ S6 C- X% K6 ~$ G        System.out.println();" y& Y3 S. b3 y
        }
    1 {* d7 ?- }+ k- w8 t  ~6 O}
    / L6 Q, t, t, @% |9 Z3、栈的测试
    - n3 Y. ~) [) G9 O$ Ipublic class StackTest {5 G; }+ h( J# T1 ~  o
        public static void main(String[] args) {* p- s; K9 n! \6 l& |! k1 \2 H
            Stack stack = new StackImpl();/ C5 X1 j4 `% @% {

    ! e7 d. X3 S' I& H/ @+ G5 e2 \% U        //第一次入栈:压入1-15
    " I! A2 Z# g$ l        for (int i = 0; i < 16; i++) {1 g( S' u& s; O
                stack.push(i);
    9 ]- l& |0 K, l        }
    5 C0 `2 O% t1 L. y  z        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    . H+ H5 j4 ^1 O0 T% B        stack.traverse();
    8 q3 B* j0 T- `/ W" h/ v; _1 M/ t5 z
            //第二次入栈:压入16-31- @2 E4 V5 i5 i' c( }  w4 Z) ^/ n
            for (int i = 16; i < 32; i++) {
    * c" Q: s3 i- o' K0 k- S            stack.push(i);
    ( {9 S: T5 B( E+ d8 x" A. @        }1 n8 c7 D% C5 ?+ E! t
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    : @. w2 X  c% k& l2 O+ ?- D" I        stack.traverse();
    * T( o2 ]( [* V/ s
    0 N" w+ n! Z2 z8 p& j. `        //第一次出栈:取出31-166 x# j* o9 R$ U
            for (int i = 0; i < 16; i++) {; _0 k: ^! f/ |
                stack.pop();
    8 p# y5 K3 d4 v- M, l/ C        }; @9 v3 A9 \8 [7 L8 Z  M; s6 ?
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    8 C! F* U/ U4 o! g        stack.traverse();' N0 e, _" o4 ]8 i+ B
    ' K8 W; B! x6 o; }
            //第二次出栈:取出15-0
    5 P! |7 L' C1 ?4 M1 \2 r/ b# A/ {, N        for (int i = 0; i < 16; i++) {' c' Y3 D- T! c
                stack.pop();
    3 T& ]9 L! l# ]# y6 t" V        }/ v* r+ P6 [; H+ S% ~& {$ T
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());9 d" g& N- c4 ]% w- j9 H3 n
            stack.traverse();
    * l7 O9 U4 z! t1 x( A1 m. b
    / m/ ^1 @# N" P& W! _; u        //栈中无元素,出栈报错/ F6 s- r" H: ~# H4 ^7 c6 A, b9 |
            stack.pop();$ v; G# x2 s5 V7 t& e% ^
    4 J3 `/ i, w# s1 K! ^
        }
    1 G2 Z! w! {& z5 F}* q# t$ \. e1 d" K3 R& E# e8 q/ ?
    3.png
    6 M0 U3 m: D, @; r$ g9 j
    ; E4 M* p9 c; C( `- K( G3 E
    ; R) H+ |; c4 t% q. v5 S$ |3 {% O7 R2 W% |' J3 W
    三、 用数组实现队列1、队列的接口定义
    % D3 r, w- u& M7 `1 o/**" ~0 b2 X3 Q3 g
    * 定义队列的接口
    , m3 P9 y+ K7 _. m5 h *- V1 I1 r# S7 y/ G" |/ Y8 i8 G
    * @author zhuhuix3 h, j# ?% ?* }
    * @date 2020-05-01
    , L7 S7 x1 ?" x0 x */
    0 u* `' L! C5 \0 ]( ~) ~* |0 upublic interface Queue {: z. v0 u6 P0 K- S7 {+ n& c9 V8 b
    # w3 d) x+ Y% o' _1 }7 Q/ i: L
        /**8 o8 ~: y4 [/ k  E7 ~! R& r2 L3 U
         * 获取队列大小
    ! x0 |' \. e+ k% D6 H1 m     * @return 队列大小% C- Y  F4 H( v3 G$ ]/ r6 [
         */2 v1 a) J+ K  L; L; N9 \% l" R3 m8 J# T
        int getMaxSize();; Y" ?. X0 h  [# L7 Z

    ' s5 V8 |* [. `# A4 I    /**
    , `- K. \' A# W+ h     * 入队
    / j5 E0 E: u2 R     * @param object 入队元素$ B% b5 |# }: ?% `
         */
    5 W8 N$ w9 r+ q    void push(Object object);, D% E$ u# N' l0 n

    4 k; \4 J# _8 |1 q' Y) n( _    /**
    # ?  x* F- p7 l: i) L$ Z# [     * 出队1 k# @3 M' p' F8 W0 N! ?  [! y
         * @return 出栈元素
    7 w1 L6 C* A$ B, }4 P" B     */% F& n' x0 ^/ a/ t1 H
        Object pull();+ h0 o4 L: D$ w" H) P0 s
    5 c, z) s% o& k" `, l0 n; F
        /**
    3 }& a1 |  c; ~5 u& `     *  获取元素个数( b& }2 Q1 E- x6 c5 i
         * @return 元素个数5 Z& K0 x' j+ c; ]
         */
    * |4 M# H$ W5 l6 ]    int getElementCount();
    8 P/ m# ^, V- C1 c9 ]% n. y* ^$ a. T1 @$ v
        /**
    - x6 ^" c! M$ c# \8 o+ B     *  获取队头元素
    3 J) Y" s7 j9 {- O7 H& T! t     * @return 队头元素
    . Y4 h% }6 {; F5 b5 Q3 _0 L8 e$ O     */
    4 {" [& E+ g! ]/ J    Object getFront();4 x# Z" w; r* U4 J% H, n/ S9 U
    8 ~* n; j) \& Y, W) i9 l' Y
        /**
    : u2 C3 D) q  S     *  获取队尾元素- |' l9 v- ?& s5 ^5 {7 F+ n( A
         * @return 队尾元素+ {: C& ^2 N+ z) H& u
         */
      R$ F0 s( U/ L# g' H    Object getRear();
    ' I: X8 N3 c. H8 P" d- h
    5 o+ B) R; t5 \: y) P% }  ]: H    /**$ N7 C5 ~) e7 G! r: ?- i
         * 遍历队列的元素
    ; e! N- |. ~$ H8 @/ O" i7 ~     */$ j) e  a- H- M# S: E9 @, h0 W* m2 P
        void traverse();" u, o  |' J3 u- o, K: |: O3 }
    }
    & a0 |9 ^  P6 k+ B, c1 F! g2、队列的接口实现  N( ^. }7 W) @" i$ t3 w
    /**
    + A9 x0 b  q& A6 p0 v* u6 S5 O * 队列的接口实现
    1 @# D' C1 M" L& z! |4 y *
    ; }% k* B( p6 a* b4 p * @author zhuhuix+ _  W5 c6 O: h
    * @date 2020-05-01
    / |, R* ~) W, U$ \ */# ?) J+ c8 z+ s5 ?. ~4 L* H
    public class QueueImpl implements Queue {7 b6 g* _/ j4 `5 i; @

    " N  }2 I% v+ X    protected Object[] element;
    . S; u; m' \( |5 I7 M
    1 J* t, x* X( }7 j$ N$ a    protected int elementCount;
    6 L' B: W/ g0 O9 W5 e0 I" ~6 k$ _) S5 S: N9 `9 ~% V
        //队头
    9 h6 H! N3 I( E2 L    private int front;, j" ]6 O9 [7 B  G! n

    , O9 b/ v& b/ J, o    //队尾
      X4 }- Z. Q6 J) m, f    private int rear;
    7 @5 a( _3 k0 |6 \* ~6 n7 s
    " o9 d4 I, v% }! ]4 Y+ o    private int defaultSize = 16;
    7 R! V0 o( y. y3 p
    3 @& z* R& i+ O6 Q    private int maxSize;
    5 M4 h$ y: P' v! f0 w- v4 h
      L4 g. l: E3 q- B# H    QueueImpl() {; `  ^7 p' g1 Q  J- v/ w% i
            element = new Object[defaultSize];
    . H, V. t8 {/ S' A0 G        maxSize = defaultSize;& S8 R: ], x& Y! g2 K% i
            front = 0;
    : f0 c; z/ ^- y, K5 C        rear = -1;. S, P6 p$ m2 @6 X6 d& p" t
        }
    1 K" K5 t# W) d9 Z2 n2 Y( d% Y' w1 [/ G  ^( l; E# R
        QueueImpl(int size) {& J- n5 ]1 c% X+ P. I1 j# K, T
            element = new Object[size];
      v7 M- z# d) ^) U$ }7 w# ~        maxSize = size;5 @! ?: u6 l$ F7 \: C; h1 q6 ^
            front = 0;
    , ^; Z4 ^& H8 M, R1 [3 g& W" i+ k        rear = -1;
    8 v4 j5 M! d/ `+ B0 k& ^/ F    }
    7 f  h3 A. @' K! x
    ! I5 y) p# N0 Z+ \& n5 m! Z2 W    @Override
    ! c5 R& h( \$ Y: [  x    public int getMaxSize() {* v: q- t0 ]+ H
            return maxSize;
    * ^- J3 L8 I( R+ D+ G) E    }/ C% O1 r1 O! z! c6 N/ Y7 ~

    , X1 @* d8 }2 N$ T0 ?4 @7 J    @Override. K3 ]" v, U  l  Z/ A* L* `6 _
        public void push(Object object) {
    ; l6 C6 u: s6 j9 q/ @        //如果元素个数已经达到数组的最大个数,则进行扩容, z/ _, m5 d1 w' q, K3 ]
            if (elementCount == maxSize) {
    7 H) ^9 o* U4 n8 l4 H. z( w; G2 q            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");! J+ n: D0 A  E8 O8 e0 m
            }# B8 v) M# t2 U' ?; q1 C3 O
            element[++rear] = object;
    8 n" w: ]9 ?) T4 l1 N# B        if (rear == element.length) {
    + O  B6 t3 T) _% |+ S            rear = -1;& v6 p/ F1 l6 o" C0 Q/ M
            }. @9 ]- x& d  V
            elementCount++;
    . H" n) K/ m# Q) J    }
    2 K' L; i: y# \* Z2 f) u, c* t! d% U% d) L* p  s
        @Override
    7 w) v( f& U  w    public Object pull() {/ R, a) ~0 o1 [, s3 q  B
            if (elementCount == 0) {
    4 B, j0 Q4 k( H. R            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    " J& X5 O4 o% Y7 U9 I0 M        }
    & h- f9 b6 ~1 m8 G3 Q' F0 x        Object object = element[front];
    7 l5 x) S1 G' q0 k        element[front] = null;' W2 ^4 g3 ^( ~: n7 y9 q
            front++;
    " M  y  g( E6 w$ G9 p, C! L3 M        elementCount--;1 E! V# F* v9 B! R6 n* g
            //队列清空,队头队尾恢复初始值$ g2 \! S; O- S1 [/ Y
            if (elementCount == 0) {. }; m, O$ g! O5 G: ]
                front = 0;
    - J) n. A7 ?% t" _3 ~. K  G            rear = -1;
    . P  a8 q& i9 q* t# b. c        }
    + R( j& R# [+ L# S# k4 E0 E5 e# o        return object;
    / r; q4 j$ o* Q( b, {$ \6 ?    }
    2 d# F# Q( O7 _$ {
    & u9 l9 X* j2 _. i0 F9 l* s8 U8 T    @Override& w2 G4 n; x" M4 r+ r
        public int getElementCount() {
    * M! s# A7 q3 ?- W6 p- d$ r+ E        return elementCount;( E6 A. T$ A- c# ?* t' `
        }
    ! _, {# o+ J1 h+ u4 m5 G! o* A/ [& V8 F" R8 r4 \; i
        @Override7 {8 Z0 F; X  u/ K6 R" x& D
        public Object getFront() {+ L8 e3 U1 |" B& G1 x
            if (elementCount == 0) {
    $ A. I% ^* K5 l9 j9 F            System.out.print("队头无元素");8 j* a3 }& }! S6 Z3 Y1 D0 O1 n
                return null;
    2 X9 V0 a, C9 e8 p        }+ ]$ h1 d  J0 Q- O* Y8 E
            return element[front];
    # K+ \! ^! C9 ^9 n; O    }& u! g6 s- z- V
    # a$ H( Z8 F' v9 K
        @Override4 m# F3 o2 r& Y6 p' U
        public Object getRear() {  E* R) o: G. R+ `
            if (elementCount == 0) {
    : X! T: ?  {# {- r" ~            System.out.print("队尾无元素");
    3 e! ?/ l/ ^2 d            return null;
    - O- S2 n8 z$ \8 x! i: y1 M        }
    9 V" A% o9 u9 ^9 R/ Z% o        return element[rear];: E( m9 d9 O5 j) [
        }. G; M  x: E! s3 Y

    - |1 `4 a( F0 M0 M+ }, E1 u    @Override
    2 W" L' [+ H; d7 `* G    public void traverse() {. G6 Q0 ?2 {5 C- ]. `+ D' i
            if (elementCount == 0) {
    ; c. M9 c: E/ D7 J, s            return;
    . d+ k8 r" ~" T% M, W! w- ~        }
    0 H* M0 U" H, C5 u# E3 U4 `        for (int i = front; i <= rear; i++) {
    8 X0 z# y' B) p6 O3 e            System.out.print(element + ",");0 W+ l$ M5 j+ ?. t, l
            }3 ?2 u9 X# n( c
            System.out.println();# q; M8 y9 D+ n. s, |, H0 y! t/ j
        }
    ( L& o3 j' c! ?8 z7 Q9 R/ E}5 B3 q1 F8 T" e& Q1 D( O$ B& H
    0 q! s0 e3 \* K0 }
    - F& U- T; r! t& L
    3、队列的测试. a" `, }4 G' x: }) ?/ g
    public class QueueTest {5 [. F7 y8 t$ U6 M% G
        public static void main(String[] args) {
    4 S; c( ?- j3 P6 N, n$ @3 \- M        Queue queue = new QueueImpl();/ ], f5 F7 i/ Q

    * V2 g) z7 D* y; f2 M, G        //获取队列大小
    ; K8 ], Q* K: w2 {6 x* k$ k4 \$ n        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());6 K5 ^6 H. M# x2 x4 N, I. e
    0 R6 B# W* u# n2 F
            //第一次入队列:压入1-158 j- m  w- x) R! k2 U2 {6 {9 T
            for (int i = 0; i < 16; i++) {- Q  w2 O$ J, q; s  [) Z' j
                queue.push(i);
    ! ^- a3 R) n7 S2 y. D, c. |+ G$ }+ o        }
    0 i+ B4 ?3 s) H. W' b$ q8 ?% b        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());9 A- L& R- D; X
            queue.traverse();' T( |' e2 T6 ?
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    , Z6 \6 J. i9 f* c3 v5 D( u5 Y- U! L* w7 U8 h
            //第一次出队:取出0-15
    # \& O  M& w1 ?0 g1 v/ z        for (int i = 0; i < 16; i++) {
    2 I  K+ w( {: }3 s2 _$ ]            queue.pull();
    . d3 J4 m, `* f% e1 ~5 b        }
    ' u/ A0 ~. g/ w        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    1 [1 M+ O0 F5 k* W5 z( T8 Q% P# {        queue.traverse();
    9 V9 L" i4 V3 M+ Y        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    + A1 \  H, A$ E" N, l+ q6 r4 ^3 l: |9 e. H* H6 t
    9 [) ?. E3 {" E# T
            //第二次入队列:压入16,31
    : A+ |+ @" j. x0 D        for (int i = 16; i < 32; i++) {
    . L" y: N7 R$ O$ \7 s            queue.push(i);
    5 k( Q/ \7 C" f4 H! Q! b% F        }
    ! a+ ~# \# q( w) \6 D        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
      k' t( V% [4 Y0 ]8 i        queue.traverse();4 W/ I, o/ O, p9 i0 v# q0 q

    2 N0 l- q* Y2 O  X8 H% A% O  B9 Y) m7 F4 g2 u
            //第二次出队:取出16-31
    : w% [. u6 s' H% }$ {! {$ ]        for (int i = 0; i < 16; i++) {2 e* B+ a" ~3 X& B
                queue.pull();
    3 p! H% t% [& [4 [        }; j  F/ ^# ~, y. R
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());2 }8 i  x( |; k4 b* m
            queue.traverse();2 y$ ?0 u7 ]- E9 w7 D; }

    ! h8 p$ T& D( ?        //空队列出队报错9 Y9 U# Z; j. g7 s
            queue.pull();# C  ]2 z7 \/ Z& O$ {

    ; M4 b; Z+ _1 u; R1 E    }, f) a, m, R- O) o2 i- |) R0 c
    }
    ) m+ K$ A' a  u( m: j, q; d# g2 M- l3 A% }4 b. k

    . {1 C1 y6 p, g$ J3 W3 b7 e9 X" U2 M. K" r" F' h9 I- ?% V5 B) ~

    / s- u; B8 ?' P$ u  e" l3 l& J$ L; K& D8 D

    / Q7 x( V& Q, I6 _# J6 w" ^2 s% n4 k
    & w0 i9 I" b, w( ^  b

    & b, m+ F+ \+ ^, d4 X! S5 M
    ' o: h9 i" a3 K$ [$ |( v- t  q/ i. L3 ^6 L
    - C/ n0 w( B) F- H" p& O" B
    ( V7 _; C8 ^6 a' M; v: O$ ?
    0 {" o& i- T) C4 q

    # O" A; |5 V7 `* z8 q————————————————/ @: a0 u0 \3 U" n  s7 V1 W
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* Q" D0 k0 l2 E
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785+ y$ K- e! Z2 v0 T5 ~& T
    0 \: ~& d  ]# `9 t  c" @
      S6 V2 J% L  O! J& g. d
    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-9-10 05:08 , Processed in 0.426130 second(s), 53 queries .

    回顶部