QQ登录

只需要一步,快速开始

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

    ( a0 S& O% u) B数据结构——栈(Stack)与队列(Queue)的手写实例
    / n2 q+ g+ j; I
    8 [6 ?) R8 n. g; y3 D& k1 j[color=rgba(0, 0, 0, 0.74902)]文章目录

      1 o/ W* s4 p5 ?( s7 F
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        # u$ e! @! h* ^/ {
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试: E5 d* B& W% z+ V: o
      • 三、 用数组实现队列" f+ ]4 h3 D* Z; c& m, [
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试1 }/ K6 ?6 r( f& b/ |9 v. Q: w
    & a% o; ]0 F" u0 R# H- c( W
    $ q( ?9 ?7 u1 j3 q. T1 y3 Z
    一、 栈与队列的定义
    ( L, T! X6 b8 V栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
      c3 M* Q( d. `: u 1.png 8 ^' y$ \& k4 f2 n# {
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    " [: V! ~" j$ e9 P: \ 2.png
    : f+ D! L1 k& H2 p. [* d3 q
    7 j, y( y( m  @+ a
    ' [& F& [4 m; U二、 用数组实现栈1、栈的接口定义
      {  K7 C% M/ ]! S5 p& e% A/**+ L4 t% A' B2 Z1 x% ^6 Z
    * 定义栈的接口
    9 k! f* i1 o7 o4 ?1 } *
    3 [" i( M* a: f8 {% D3 [/ _ * @Author zhuhuix
    8 X1 z% n' k$ Q( h/ Q * @date 2020-05-01
    $ e+ q) @6 G. U. v, T9 G! A */1 s- e1 P6 q7 a0 `- `$ k' P
    public interface Stack {
    * Q, \+ E. s/ f) L2 K* N2 Y6 s' v" X    /**
    5 \* `! M7 I- h     * 入栈
    ; y' p" O' }8 I' x5 o4 Z; a; C     * @param object 入栈元素
    , g9 H9 G. i8 {( a- c3 Q( R     */2 J5 q3 n9 V! @1 A7 ^' I' c1 H
        void push(Object object);4 _# l+ m7 d& {8 r1 E
    ( C8 m/ B! V8 [3 q* v, D
        /**
    5 M! o* P- X- L7 N: C; \5 ^# }8 m     * 出栈" I" n/ n8 j! C( F* Z
         * @return 出栈元素& b- y8 |8 H- E8 F
         */- |4 N+ {3 z/ N( b: C$ C
        Object pop();
    ! z5 J. i& q3 z( m, x7 S" n: q& Y, u) U& x
        /**
    , N' y$ k! V, L$ h+ q5 n     *  获取元素个数
    : a+ `2 s1 N3 R; Y# ], P     * @return 元素个数* }" P. e. [; J) I5 Q  ^" x
         */
    6 f6 [9 R' v. K% l! a2 @    int getElementCount();, C+ \2 c, |: a& I3 K: i

    8 V; B; B+ t" y; S1 K- a3 V, \; U    /**$ t$ t/ w7 P, n1 L4 S
         * 遍历栈的元素
    $ r4 d9 o6 O, z9 e0 L+ p# \  |     */4 x( A# j1 t0 c( T/ M: s/ X7 C! f
        void traverse();7 T, N  k2 a# h6 _
    * H1 L6 |/ c2 }' J
    }9 Y. P1 {9 l& T5 L
    2、栈的接口实现
    ; W' T+ E- o1 n. U' z" Q/**
    4 k4 W: m1 n; X' g * 栈的接口实现7 Q! ~+ {( c" u* Z( e5 P
    *+ L7 T0 g6 W, h- o8 K
    * @author zhuhuix8 W' ]( y/ J' d0 H7 {* r' q) k' n: ~
    * @date 2020-05-019 J. _! j, _  _" a
    */, h) Q8 ?9 Y, I9 X. }) j
    public class StackImpl implements Stack {8 I7 {$ G1 C- M. l1 `& D+ [
           
    6 y" Y+ L" J8 |4 i* i# ^  ]    protected Object[] element;$ K2 V5 O  f' ~7 ]: t

    & P# [0 Z$ Y0 R6 E    protected int elementCount;% g( t9 A' K+ }8 o4 v

    ) ?. e( ?( H3 a* r: M    private int defaultSize = 16;- W- \+ Q$ M( T: K; l

    / @! x. S+ g; }( z( p6 `$ y( C# ^  i    private int maxSize;
    3 b% h( E1 [6 q3 E1 @) c
    ! O* H  i; S" N- W" }8 }7 z    StackImpl() {
    ) d' {; L% [7 |" y: q        element = new Object[defaultSize];
    - n! u" ?+ i. O( J. i3 h! Z        maxSize = defaultSize;
    ! O" U' {* d5 w9 P) v; D  N! P) L    }8 h6 z9 m( o8 J! ?% m
    ! K  i7 W0 _% [) U
        StackImpl(int size) {0 V# W/ h6 c2 P/ S" E  \+ X/ a
            element = new Object[size];
    5 u4 w6 C( A/ G0 F! w( T        maxSize = size;
    % [" R% j- K% J0 }' W3 v- j    }
    " z/ G) N2 l! Y1 T! P3 T+ x" @/ \. p2 q# x5 B, [
        @Override
    ) |, |, v( d, F. |  |6 G3 a    public void push(Object object) {
    3 Y, x& r3 V& y) W/ g+ x        //如果元素个数已经达到数组的最大个数,则进行扩容
    4 u9 g1 z" [" i        if (elementCount == maxSize) {; M/ s0 |& R. E( L, ?9 L+ M
                element = Arrays.copyOf(element, elementCount + defaultSize);
    7 e+ I5 M) e& C7 n% Q) V6 c$ G        }
    , _5 {" V9 F' {* e        element[elementCount++] = object;
    2 u  X) {5 V" J, F7 S9 F9 s6 o) q( ?! y8 h
        }+ b, W6 Y5 {, J
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    6 d) N/ y* }( n  ^. A1 B# D    @Override. u( h" y( X' G# @! p
        public Object pop() {, B, c9 v5 s5 {6 l( a! A
            if (elementCount == 0) {1 y7 D5 n1 S6 P/ V
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    + D1 U; x  ~" U6 A* M        }: F3 d6 {  |) {2 w/ t9 j: @
            Object object = element[--elementCount];
    ' C% Z9 ]" ~5 t) O        element[elementCount] = null;2 D; A0 [6 A+ o2 q
            return object;: x& R) h* ]; j8 n% A2 E; u! J+ T2 `
        }" y' j+ V% D2 v. p* G1 Q
    $ r1 H$ F% ~' y& V+ Y% }9 N( [+ [. N2 C
        @Override
    ; s4 i- V3 w$ {" ]6 r    public int getElementCount() {$ ^4 P) o9 d  D6 k* h
            return elementCount;
    " l  }3 c, z5 v( E5 e3 i    }
    - i5 z8 A) f4 L
    ' k; n: v3 j' N; P& ~( P    @Override
    * k" o3 S6 L, y2 }    public void traverse() {
    8 @4 P( N5 d/ z: `+ t) i        for (int i = 0; i < elementCount; i++) {5 n8 \# c: }: G# E  b8 n$ A
                System.out.print(element + ",");
    % r6 c7 w9 K) T        }
    2 G- V( }9 {" r* ~2 q% \! [; @; d/ @        System.out.println();% m' L! A3 z& C$ `+ S% L- Z9 V# `' n
        }
    $ r- p5 E  A) ~1 y  T3 _) n' v}
    - W& [! A1 P7 S7 _3、栈的测试/ q! O0 f5 `: i! X" B( O# U
    public class StackTest {4 p* ?3 w  n! Y: E+ q8 f( h
        public static void main(String[] args) {6 s; \9 Z9 Z, E- F
            Stack stack = new StackImpl();1 @8 v' p  D/ C8 w7 ^/ a( r) a: j" C

    ' \( \: [, J" w( x8 e6 D! z8 i        //第一次入栈:压入1-15
    1 w9 B  L5 j" M) m4 o- w% R- m$ X        for (int i = 0; i < 16; i++) {6 x( M4 d) ]2 k0 B/ y, R
                stack.push(i);
    7 u4 v- D$ X) w# D: Z9 ^4 a! j        }" f" `9 |2 d0 P  o$ Z$ }8 }! i
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    8 ^- Z8 |. g& H/ [, |        stack.traverse();0 g; Q  R: D7 l/ \& X( v

    ! H# w$ Q8 \9 M5 F: H        //第二次入栈:压入16-31
    - |) E4 ?* k& Z3 X8 j        for (int i = 16; i < 32; i++) {
    9 \4 q* I; T- w  B) c7 k( z6 V: k            stack.push(i);
    ) [) S; S9 U+ J4 v        }7 b3 t( `& j5 y0 S+ x
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    % D5 D$ B  ]& T, M5 j        stack.traverse();9 V' c3 b9 I: h1 l) ^/ _. h; P

    4 ?/ [+ [* T! R9 Q        //第一次出栈:取出31-16/ |( V# T) L, u0 `
            for (int i = 0; i < 16; i++) {
    , @+ {  ~# W1 s* L6 a            stack.pop();- G4 X9 j. n1 G6 G' `. }
            }: V/ y1 d/ C# ~; h+ T8 Y
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());, F+ O8 u4 q% e
            stack.traverse();& i6 P: g& q0 u5 ?( Q

    9 ~0 o; M  I- d8 p- c' @1 u1 j/ U        //第二次出栈:取出15-0$ u% |* E) \1 h3 [
            for (int i = 0; i < 16; i++) {
    / u6 g. y3 \  M            stack.pop();# n- H8 w, j5 ^" F: ?) d, w
            }
      p- }, S# {6 F$ D/ e- w+ |9 u        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());' Q7 N3 E$ v& y
            stack.traverse();& _* a2 X2 W1 N% v

    # q! U# I3 [5 r; M% e; u6 ^        //栈中无元素,出栈报错  @. U6 S" ]3 K2 S
            stack.pop();
    , r' o+ o' p4 l/ X& Q" b) ~1 R- [" K/ ?* r% [2 P
        }
    ! R4 D2 G, Y1 b0 n) E}# x/ |4 f: W, E. O
    3.png
    3 a0 r7 d* m+ @  l% D& W5 o. Y. U, v8 x4 j6 g
    3 {! V5 y* Z0 E, o

    0 t" }! z4 z6 m三、 用数组实现队列1、队列的接口定义3 S- `# ~  ]+ v6 s" X$ J# Q/ ^
    /**) f$ K4 o% ~  O
    * 定义队列的接口
    0 g- V4 ~" `' B$ \+ w+ U* u *1 H5 l; p. a3 E
    * @author zhuhuix# Z* d6 N5 e3 v6 N* ]! w
    * @date 2020-05-01
    + f2 P3 n  T4 q3 q; b! [3 I */* ]1 b5 z' Q( c' `
    public interface Queue {% ?/ [, t- h0 C
    . O+ I" d2 d* \; k) b$ s( K
        /**  l7 n* \# g. x, A, l
         * 获取队列大小
    . h, y: @) P6 o. C( }- R6 `     * @return 队列大小
      R1 r% U3 R. ]2 {* f' c9 Y! _     */( F% T, m- R; `- }; q7 ?7 @& e& d
        int getMaxSize();
    5 ]$ l: `. ~& Q6 a6 H; ^% J/ Y0 U6 R1 U7 C3 H
        /**9 U/ Z" l& H$ k4 E
         * 入队
    ) F$ q' l" \. `* V: k     * @param object 入队元素
    ; d2 B+ o2 [" o' L     */( ]- ]0 C6 a3 X7 {9 `9 s% @6 l
        void push(Object object);
    + o; @! D/ P8 N1 P3 N8 V7 I
    $ m6 R, s3 U: w. R! _1 A: t" R    /**
    0 @# u0 B, x8 ]/ P: x9 x     * 出队7 r6 l  o8 L0 A% N& h5 B2 r/ Z. b
         * @return 出栈元素1 M3 H8 |* b. l
         */5 [: x" o& k) y/ d" o; [6 R8 ?
        Object pull();" V! O6 Z8 r1 q: Q7 P0 ^

    . N8 p9 ]+ O( R8 ^    /**
    , u, B6 G6 L% i* ~5 ^; A# M1 K     *  获取元素个数) n2 e7 [4 v+ I
         * @return 元素个数4 g- ^/ ~$ Y3 [: o
         */, a( V. u8 l- \; r0 v, d
        int getElementCount();
    $ X7 i, u, s% d* t: x; \$ Z! n: K% f0 F3 \" v" s
        /**
    # T% ~5 z  _9 j* N     *  获取队头元素
    1 @, L- R) e% p- o3 p( T- S9 g# ~7 h     * @return 队头元素
    - c2 m" u9 C: i: G; p     */
    4 l# P  r& m! v# d    Object getFront();
    9 z$ v" J, |- |( I& z  [) B7 P3 g5 ~6 l
        /**2 Z4 ~+ s" \2 N" X' b2 q" `; f$ l5 f
         *  获取队尾元素9 Z+ t6 m/ I: |
         * @return 队尾元素
    - Z; s3 y* L5 [; y* H     */
    : r  ~: [' X6 k4 H0 {$ c0 Q    Object getRear();
    ) I. h  b! \6 [5 D
    7 g4 i1 \8 v" h# c! _2 S    /**9 ]' o6 c0 N6 j2 j5 T
         * 遍历队列的元素' H1 ?0 V# v: i- h) o0 S9 u! d
         */6 B0 y& W; Y1 w* `+ k
        void traverse();- c. X8 y" P$ L: }! Z# t
    }+ `( ]  F. D& ^, E2 z. Q4 I2 d
    2、队列的接口实现) C  A8 R& S& k* w
    /**2 J6 U/ U* V. p$ R5 w0 D
    * 队列的接口实现# I, j7 j+ T& Y1 u" I2 H# p
    *5 B: J& c7 s5 x! K
    * @author zhuhuix4 m* |6 t" d$ r& A. x0 `
    * @date 2020-05-01
    - P0 y8 f6 m* a$ c */' p+ y2 ?5 T' s
    public class QueueImpl implements Queue {
    ) I) @5 _9 @3 ^0 t( v& \# y* W% {7 O2 {: Q6 S  ]
        protected Object[] element;
    1 ~7 Y+ A# R" P8 f6 T7 Z
    + a2 y$ b$ e- d; K% @) |" Y5 @    protected int elementCount;
    & Y  \+ M9 x6 }5 `* b" [3 k5 N: O/ j1 L2 ~, _2 J
        //队头
    ; E% a% ?% l5 `; y' x    private int front;
    8 j+ J- a* q3 E* ~) i( i/ ]2 ]/ r
    5 E" U7 R- h; ?: B    //队尾
    7 f& j* u9 R' |' w9 ?$ ^    private int rear;5 G$ K3 S5 G# Z6 R6 z& P' B

    / ]5 J( y7 Q# F- k. E    private int defaultSize = 16;) q( g% D0 t% P: P1 W3 I% f5 o
    2 T( f+ M" Y! k) L7 S
        private int maxSize;: J! e  L8 t4 r' }% K- i1 r1 Y
      z. ~+ b) ~! f% E
        QueueImpl() {& V3 B* V# |  Z
            element = new Object[defaultSize];
    6 M9 v5 ~( y6 s+ S2 ~# D        maxSize = defaultSize;& b! e0 f; T! I; \8 [$ E
            front = 0;- I% e+ I/ U, Y: T# e* y4 S
            rear = -1;
    + ^. E% G/ d% \5 _$ D    }: m/ t; E, Y6 G+ ~7 B
    / f4 [& W  u. F2 Z
        QueueImpl(int size) {  C  q% h. ]: c8 l- l/ I
            element = new Object[size];/ C) {( `9 e$ t
            maxSize = size;
    3 h# w. A. A, R  h0 w& h' a! E        front = 0;; t1 l3 j& V  B  }% a* n/ t0 K9 ~
            rear = -1;( ?  [) }3 E( I. H4 T
        }
    ) d9 h( X0 l3 V& o, o  d0 T$ [5 h, {, x
        @Override5 s2 z% B. D9 [! i: L
        public int getMaxSize() {# Q7 r! D# I9 U
            return maxSize;
    1 @. a- A. X7 Y9 y    }4 U. z- z. p; y
    ) t  }! q$ k( I7 u
        @Override
    % ]. w- g1 Z) T  P    public void push(Object object) {
    ! g+ w) V1 E) U( }, i2 i- Z, ~0 g        //如果元素个数已经达到数组的最大个数,则进行扩容5 z  I" E( s! ?7 l/ h1 d2 v
            if (elementCount == maxSize) {
    6 I  I- O( I, H* q+ N+ o; `  j            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");3 K- X; y% a: q- v+ u3 ]
            }
    ( a5 l0 k+ c: N0 r& P        element[++rear] = object;& @0 m, \5 h$ W
            if (rear == element.length) {, q- w$ P2 ^$ \) C. @4 a4 ]4 U
                rear = -1;, ?1 j! B. L: n+ C, t8 v) }
            }7 f  Y0 {/ [7 |" b" M; |8 s
            elementCount++;! c# s; [. l9 ~( M4 o; I# V
        }
    # Q* D0 i3 {: I: Q; ]1 r5 G7 C! [
        @Override
    9 V4 O; U7 D  n/ d2 \    public Object pull() {& m# r* Q2 t2 B) h# d% z7 T5 c
            if (elementCount == 0) {
    7 T' S3 E! k0 K+ s            throw new ArrayIndexOutOfBoundsException("队列中无元素");9 q2 ~  s4 F. x4 t
            }
    1 {3 R3 l2 Q6 z" q        Object object = element[front];8 T. F' u0 w! d
            element[front] = null;! A  k1 {; |9 x0 w
            front++;
    ; h8 Q. e9 k, q( E+ [( W0 @# V        elementCount--;
    1 s, w$ ^% I: j) ~+ E        //队列清空,队头队尾恢复初始值
    : i$ w3 F' E) F0 s& |  B5 v/ ~/ p        if (elementCount == 0) {
    6 u+ g) \4 v5 J            front = 0;. ^0 L4 p$ F; }/ y7 m, [
                rear = -1;
    3 L/ p* |5 W0 h, J3 O* d( r        }& }  y" t/ p" m. t' J
            return object;
    , r4 t. H3 L- i; O+ l1 ?" G    }" \& O' Y0 [8 C+ ]3 W5 q; O

    0 |+ @( E6 F; U. ~5 q6 ]    @Override/ j8 e/ s. f+ S. U5 d1 k
        public int getElementCount() {
    - S; R: s) a2 E/ U7 E( U        return elementCount;2 `; j: _- K3 n/ Y  D3 Z9 Y; F, y5 X
        }( [+ i% r$ |9 O9 k- e, _8 B4 j
    # f. M3 ~7 v% z1 J6 g
        @Override
    & `# l! m8 e( m6 {, V    public Object getFront() {0 k3 x% D$ [6 `! d: O5 `
            if (elementCount == 0) {) K8 O$ Z1 l  t' U  j' W
                System.out.print("队头无元素");& E( \1 p0 _9 Y- X2 P. ~( e, p
                return null;% i4 ]7 g6 A" {* o; `
            }$ A7 E' Z8 z! n  |+ n# U- n" ?+ y/ b
            return element[front];- a: ]0 P2 Q- m3 ^
        }- f* i2 R: h7 X2 D

    ' _7 \- f, }6 v0 b    @Override) E% b0 h9 r* ^' I# ?5 t
        public Object getRear() {
    7 L/ A, K- v! O5 `+ C: v        if (elementCount == 0) {0 G& w. X$ ?0 J* [
                System.out.print("队尾无元素");
    % u5 ~4 {0 i0 Q6 d* D2 ~' f            return null;
    3 D  L! p$ v6 E7 C        }" T+ _  v$ |) H1 W" v8 h( {
            return element[rear];' |+ N5 u' j9 X6 n: ]: _% @5 e$ K
        }
    ; r. q4 Z" Z' ?8 v) x% ]" I9 y5 y
    ' l! X2 |; s7 m6 K1 p    @Override
    # E* d- \/ ]) g2 ]+ p1 b    public void traverse() {- K2 D% u) ?6 I5 t* y; e7 C: _: B2 X
            if (elementCount == 0) {
    ' E( L7 D0 L" W3 T8 n4 p            return;1 t$ L' x# P) d# g+ l- x
            }0 I3 w6 J) p' {, p) k% q5 X8 g
            for (int i = front; i <= rear; i++) {
    # k* A* r5 E* g7 S            System.out.print(element + ",");; L* }/ w) Q0 t& \/ r0 x! L3 k; m
            }+ r% W2 }% v0 i' I# {5 @7 R+ K& x
            System.out.println();
    " t+ P) X. N8 ]* q    }
    : F8 R  ~8 W7 p5 p" C! W8 Z}
    9 V9 i  U/ y* v( l+ x
    , O6 {" `# P& d# R0 F3 V  [' l0 \0 _7 Q
    3、队列的测试
    ; X  H5 \: g0 Q- ipublic class QueueTest {
    5 k$ @. i! V/ O: U    public static void main(String[] args) {
    : R3 Y( K  p( O        Queue queue = new QueueImpl();
    $ Z3 m+ Y" C9 z4 J1 q0 Y+ |+ b
    3 t3 ^1 f; \0 A        //获取队列大小, k3 a3 s! q1 D
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    0 d6 y7 C* _; R% o: H
    ; }$ ]2 J$ {( W8 F) @" L7 h, ]        //第一次入队列:压入1-15: X2 U: p, W, W2 d7 x
            for (int i = 0; i < 16; i++) {
    2 R: |& ]0 Z0 V( |" X            queue.push(i);# v/ V: w- g/ V2 q. t& }
            }
    , v8 |% L; p( o: D$ [: N        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());+ n4 k: j' y5 K) m) F9 ?
            queue.traverse();, r# t# x9 w% U  \: c& v0 D4 j
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());: f1 O) a; E; a0 U

    . T7 V: y5 g" Z: V        //第一次出队:取出0-15$ s* ?. f, l0 C$ s
            for (int i = 0; i < 16; i++) {7 q( J7 R: J. t
                queue.pull();) L) u9 C" g6 o5 b- D' D
            }% V2 ]- W  a7 K; W1 p4 S, j6 Z
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());! J" e! }+ y' _) G  v2 g) u1 J* y
            queue.traverse();
    ' O2 Q% [" a: `$ u  m        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    * A8 j- z5 E, g3 [& A. ~/ k
    + p" P+ K. E0 V7 `! r" @! f0 e# E5 y* J" u/ U
            //第二次入队列:压入16,31
    7 f2 k" z- L. |- _8 T        for (int i = 16; i < 32; i++) {; ~/ a! Z7 l7 T. s7 T6 s
                queue.push(i);6 z$ V9 u; E, E; w# _
            }
    " P0 _& V. _* F+ v7 H- t, C        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());5 Z9 f1 ]2 |- {
            queue.traverse();9 [9 D' ^/ E2 S

    % `5 ?' t2 I$ r) }4 J8 q
    - H/ T5 }) F2 q2 j7 r2 K3 F        //第二次出队:取出16-31
    0 `. j4 [7 \4 n/ m1 I9 f* K% \        for (int i = 0; i < 16; i++) {
    6 X5 U" A, D) g7 F% ^! v            queue.pull();
    8 H6 }% ]4 A- k' y8 e0 u        }
    + f  }1 a' G% q# e) a; b        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    2 n  J: F) h, e% K        queue.traverse();5 R3 G+ A: @- g0 ]  f

    ! B- e( B; b$ F! y! O! q        //空队列出队报错
    & L4 [. J2 y1 p+ e, m        queue.pull();
    7 [2 S6 P' U2 p
    5 I  u6 U3 K1 I9 i  [0 ^    }
    + x% m0 z" F3 {}! I& c3 w5 \- [
    / q7 O/ p# \7 {" Z8 d* u

    ( M) z& K& [0 Z$ M9 ^
    + V7 m+ K$ n+ f% g$ ^: O/ w; _5 u, _* v' @' b( Y) ~' x4 o! _
    2 W; c7 l# T+ Z. {
    0 t, W& v% S, j/ z0 K7 p! l
    ! y# j, {  ~, Y6 K- I) g

    $ s1 m# f$ W& q7 `& Z: o; s' L" `* I+ I8 F3 y

    ( u5 E3 x$ c; [' J& |2 w9 P8 A+ f! V0 @5 R
    4 B9 ?" |( c" @2 G( G5 M& z
    9 @  i- ]) @+ s0 _
    7 A/ O9 y+ u9 ?# ^0 m5 \

    / G1 `3 L3 X8 x7 P4 y) F————————————————! v+ A0 B' z* q
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 Z8 H5 [$ \+ f5 W
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    $ o" e" V# z, @9 D. k5 n/ k2 T0 D, C" e& o. |+ z) b; `

    6 C4 @9 r5 ^" A3 Q1 ]3 w
    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 13:01 , Processed in 1.187591 second(s), 53 queries .

    回顶部