QQ登录

只需要一步,快速开始

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

    ' L/ S2 ?: {- M3 P; @5 C数据结构——栈(Stack)与队列(Queue)的手写实例) O8 ^7 C' ?7 y2 F3 |
    8 i' M) j/ V* ~7 {1 {& ~# }
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      7 V+ D6 k1 u1 e- I  C
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        9 r& W6 f8 L" p9 ?
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试  I" A, F+ Q+ I$ G" W
      • 三、 用数组实现队列0 P1 |1 t. B7 l- ]
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试3 Y) f2 k7 e4 S6 y* k: K+ L- w
    # b- m3 L! [* e9 ^6 E5 ~
    . O* u# x0 p8 J# R. n
    一、 栈与队列的定义1 G* D. a2 g: l  n
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    , i0 J; b4 O$ ?8 J& t 1.png
    ( _% c9 ?5 S4 O: w$ R 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    # [3 T5 T* _4 Z$ g8 J1 H6 O 2.png 4 {- @, }4 i' R5 q( U  W
    # o1 e1 Y8 y& I
    ' k' r+ V7 X6 ~7 i0 J, U
    二、 用数组实现栈1、栈的接口定义7 ?& a4 ]1 ^6 f. a& h) D
    /**0 Y9 b! n& p3 N' V/ G
    * 定义栈的接口
    8 w6 i: J/ a; b  R; L0 f* A/ }4 L *
    ; Z& u2 Z. U9 ?0 j/ `- H * @Author zhuhuix2 [- s0 O- r  I
    * @date 2020-05-01
    1 d4 I0 u* G7 f# c9 _; [+ [ */# G# P6 n( d! Y5 P+ C
    public interface Stack {
    , e! R$ W. p$ S7 i, Z7 U& S8 H    /**
    3 t% \1 R) G) B5 @: U     * 入栈
    4 b/ I+ H# @, u     * @param object 入栈元素, p6 v: g6 @4 j3 I& n$ w7 c) G: }4 ?
         */( y# @4 i) _+ o1 b& R4 o. M4 e
        void push(Object object);, O- ?* e' ^, u& |6 ?4 d: {
    ; J, j* Y! i( y, _' \6 O
        /**# \$ T" k( [) {+ b
         * 出栈" L, v0 T; u+ O' k2 T
         * @return 出栈元素4 G8 Q, i( A, B  T. H  K
         */6 t$ i0 s8 ?2 T; d5 B
        Object pop();0 o1 l, q, k* w: ^- T
    , w, Z, a- U3 B, Y0 e
        /**
    # P- @4 f# f2 y- [2 k) \& m( ~! l2 N     *  获取元素个数5 Q, E$ ^9 }% h& I
         * @return 元素个数
    + r, K. Y3 B6 h3 D8 p# t3 n     */
    ( u8 M$ p* E' f; }" ~" u- M    int getElementCount();
    $ ~' h1 `2 b4 t1 _6 O  i1 u5 a3 @1 w! W2 V) C1 D( F- N
        /**
    5 d. q9 b  p+ ^     * 遍历栈的元素
    ! W; C8 G: d/ e* ^2 y. D     */3 G* p' r' f) N4 u: ]
        void traverse();
    ) k+ u6 ?2 v4 M" c! u
    1 D+ c/ u$ G* s+ G$ M: i( _}7 S# L$ O+ G+ V3 v, K, Q- S8 c
    2、栈的接口实现) V# v, Q/ o! F( X# G. ^
    /**" i' R, M# \  H+ G. s$ T1 }
    * 栈的接口实现
    # K- C: ^/ ~1 j2 Z *
    ' D( P  P" e1 n8 R * @author zhuhuix
    7 k7 S; n1 |3 p+ L, } * @date 2020-05-01* l6 o* ?6 v5 m7 r- I
    */6 k  W( d4 S' p
    public class StackImpl implements Stack {
    ; B  G1 r/ `2 f! ]  M& b( r7 ~: U9 ~       
    3 U  O% A6 M+ T5 u( n; R9 X    protected Object[] element;; s8 r# I) e/ q8 j

    % Q; D9 ~" L8 \+ I& o" J3 @) f' B    protected int elementCount;
    9 B% {$ }# a# W: ^# c: P1 k& s+ ^, B7 b, J* ]" f& F
        private int defaultSize = 16;6 X! a  M4 E3 Q7 y/ p6 Q& ^
    6 N9 q/ V1 Y7 l! w& K
        private int maxSize;% @$ A0 ^2 P0 ^( m

    1 Z( a1 `3 S5 n8 G0 i    StackImpl() {" x) E& D: O/ l1 L/ U6 e; [
            element = new Object[defaultSize];
    " l7 h0 ?/ S6 w5 C7 s, X: ?        maxSize = defaultSize;3 w, B+ u0 p' H, f1 v* c
        }' b' d) N! T) o
    " \5 S2 \# y+ z, B, Y: o
        StackImpl(int size) {
    1 t& v1 ?7 N+ U$ r; x" B6 [0 L        element = new Object[size];( \$ R6 L. h  G8 _" |3 P
            maxSize = size;$ l& p* w& |( X
        }
    7 w7 u3 Z6 ?; V2 n. R9 O2 `0 r+ [/ @5 k, M/ O
        @Override. M( f6 p  `3 V) l0 R3 ?
        public void push(Object object) {
    2 z$ u- s4 u" L9 w8 x        //如果元素个数已经达到数组的最大个数,则进行扩容9 N9 P, i2 h3 R1 E" i# O
            if (elementCount == maxSize) {4 k/ M9 I2 ^- H% r& B$ u
                element = Arrays.copyOf(element, elementCount + defaultSize);; t( d3 E4 w6 A& A
            }, _; l0 h- r  R0 C1 R
            element[elementCount++] = object;
    % [& ]2 v4 \2 [1 v* n0 m5 Q* N2 j- x5 v0 e# f
        }
    : X" M0 W" W2 K9 j4 L        // 本代码未实现数组的自动缩小,具体方法可参考JDK7 Q, m6 m" C9 R9 T/ F1 u/ k' ?
        @Override/ K3 E$ g# ~; h5 X. `
        public Object pop() {' v' I5 F, a* I0 T; @# q
            if (elementCount == 0) {3 l% P2 f/ x& J! F' a3 M5 z
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    , M+ E2 m8 C: |; C" [* a2 f        }  q9 K( z2 |' Y! ?$ b- Y* W! Y
            Object object = element[--elementCount];0 V0 e$ k  @6 K% e: V% @, G/ m  Q
            element[elementCount] = null;
    % M% G$ H. u; i( ?+ X- A& ]        return object;
    5 n, P- b: V* v1 L    }& l) ^0 S. W: c2 Q
    0 Y8 ]" S3 s, e, K1 _) R  `$ ^# f
        @Override
    ! Y$ Y( R! T! E$ ^- V- H    public int getElementCount() {' b0 m6 D) K! L; L( h4 M
            return elementCount;! ~; I1 ?  [( ^! `8 @3 U
        }, a8 x$ y% G/ g3 b1 I$ M6 `
    & C: f5 n1 R) r, [) a
        @Override; \8 x* f0 a1 H# u) I, e. o9 O
        public void traverse() {
    6 F" {% B4 y" b2 ^1 g# u# F        for (int i = 0; i < elementCount; i++) {
    8 r8 P7 X- Q, y" k5 }) A" s( \            System.out.print(element + ",");
    $ H; [0 K- [0 l2 {3 `0 o        }. k' R! d! s7 c; T! Z2 Y; X
            System.out.println();
    $ `0 F0 e. {, e0 d9 T    }
    $ L4 s$ H) C; Q$ [}, W( _: ]4 v' E3 L6 f5 m4 E
    3、栈的测试
    ' \1 ]) K9 k; v5 \2 y  e* z7 V3 |6 Rpublic class StackTest {
    + m  |6 l! D( c1 \4 M    public static void main(String[] args) {
    ' F* E1 O$ E! `) }        Stack stack = new StackImpl();% y* i4 a# M* s% F% u

      ~; [5 l' f+ a  e- M# X$ i, J        //第一次入栈:压入1-15
    " O8 S" d0 R9 m1 e' d        for (int i = 0; i < 16; i++) {7 |6 W0 `9 P, y& x
                stack.push(i);/ [  V( r' r4 p3 ^" s1 S
            }, S% O8 n# V' y" }; y
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    6 ]7 L8 p& J) t" k5 X        stack.traverse();4 u" g. o* }. H4 ]9 A8 a" e/ d

    4 X4 i7 Y7 t/ O  t% y) t, f        //第二次入栈:压入16-31
    8 J- M- O1 I! e% A# S/ q        for (int i = 16; i < 32; i++) {
    . H% I# |% H( Q. F( C            stack.push(i);/ G- c5 Y# A3 T$ f. |, }
            }
    4 x" ?* N" Q! w' d) O" j0 C+ s; @        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());% J0 m* e" C# A1 b2 I. u
            stack.traverse();
    % n2 i# \7 ^7 u' y
    8 C" _: y) S9 }" h( r        //第一次出栈:取出31-166 ?* ?7 A$ x2 ~0 \* {2 ?  j8 `
            for (int i = 0; i < 16; i++) {
      i6 O" u1 |9 b0 w            stack.pop();
    3 L2 R, `0 ?; y% i3 Z* Y        }
    , o9 h# p+ i  B, {/ B        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ) ^, R7 O$ Z0 K1 \        stack.traverse();; ]5 J: ~! |& J# Q( T

    . X! [) G! v3 k        //第二次出栈:取出15-0
      r8 s3 ?& X# A        for (int i = 0; i < 16; i++) {2 F! y7 H2 ^; q1 t! q9 s
                stack.pop();; G) Y9 H4 J9 h+ G0 Z3 S0 W
            }: Y% T# U+ I' |$ {/ O. O
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());# H" K+ S: x: ^3 ?6 i
            stack.traverse();! F9 J' O: c, F
    : @& R+ ?$ m5 C8 q2 z' D
            //栈中无元素,出栈报错( C1 F8 M/ q! g  f& q# `
            stack.pop();0 S* F6 Y  W8 k

    ( `  {+ o7 \% d3 u    }* x& j: y3 @6 L% t7 H6 b
    }
    7 S: t" {9 `5 \- P# @ 3.png ' W8 c6 b( W& h6 K& H

    0 f6 }' g$ \  I7 K/ d& E& a9 d2 \8 {0 |: I
    1 z! ~0 x  o/ \0 s
    三、 用数组实现队列1、队列的接口定义
    7 V- N( a/ X3 h, n; V/**/ r' L5 U* T# S8 O2 J9 k' c: l* d
    * 定义队列的接口
    : M) \: F) B, k- T *
    / o$ z/ N. l. D) M, n * @author zhuhuix
    4 [3 z' [+ u. A9 m# T, J% n * @date 2020-05-01
    7 d4 N2 p, C$ e1 m8 n! F5 T */. V( m; V8 i$ l- U  M
    public interface Queue {
    ) H% J( \: T# {3 l& ~
      _7 S2 H& f: f3 O    /**
    - z& t3 }+ l9 t& m     * 获取队列大小, c- ]2 C+ n/ _' D; R( t
         * @return 队列大小
    3 d0 i/ S2 f1 N" c4 ]. u     */" Y) l  x" d( R( ?; b2 N; @
        int getMaxSize();
    , Q5 v2 T* A4 B* c- ^; K- i
    & h. Q% Z4 }4 ]* {3 G# b    /**
    / {3 G& R, ]" E$ w     * 入队0 F2 H; g6 x9 w  Q
         * @param object 入队元素, c* [( @$ d, ^( m3 c) ^( F
         */- k2 l2 f' A1 y
        void push(Object object);
    % H3 c4 S% Z% k) b: h+ `
    . A' d, F' F" U& Y! v+ ]+ Q    /**9 f; [/ c8 J5 p) F
         * 出队% z- b- T4 a& _  k. G- ]' l! \
         * @return 出栈元素
    2 r0 M8 @9 G5 _8 R     */! L4 p6 @/ o7 C% h1 V; }6 @5 ]
        Object pull();* }: w) i; a  O3 a; O, e
    2 A/ e! g+ d$ n1 Y) `& g# \+ X
        /**% K, q( j1 [% k* O+ l/ x
         *  获取元素个数
    & M, p' P  x  O+ [, }% w     * @return 元素个数5 _5 S) p7 x! H$ q% e* T! I
         *// |$ p9 H: O; W' U
        int getElementCount();8 P! a+ v- ~0 m' x  T9 b
    & l: C6 S: L6 |" @) ]
        /**
    + x! v" w4 H2 V- {6 |0 |) o+ B) O     *  获取队头元素
    1 |# D' d, v: x" F  e     * @return 队头元素3 ~5 J3 ^% z+ A2 @, K
         */  L, D" m2 K4 y1 u, p/ c' W
        Object getFront();
    $ S' h. E& E" w. _  t" ^
    8 S) H  d$ k6 ]    /**
    9 j6 n2 V" ~) i2 I. t, U# C     *  获取队尾元素
    % J, L- v& ?  O; l     * @return 队尾元素# v+ S4 R; G- |% F
         */. n. Y& ?* W- ?4 \
        Object getRear();
    2 _8 T# a5 r- \% \' g0 F7 l$ y9 [& @8 b
        /**: L2 d: ^( d# s
         * 遍历队列的元素  C, _2 y/ ^/ _
         */
    2 k5 d$ K# l8 t, Z: J6 V* c    void traverse();
    ( P. W6 U" W- U}
    ! F4 {! [+ e5 T: U! p) j2、队列的接口实现
    2 O0 K% I" ~& @( Z5 |' |/ y/**5 l( D$ X, o- b* }
    * 队列的接口实现+ z1 L0 _$ {9 V+ u
    *& Y# M+ H( u) V4 a5 [
    * @author zhuhuix: K& g4 j7 i, Q- t& i5 n
    * @date 2020-05-01' U1 V4 s! |3 G1 F
    */
    5 @' l# G- M; b4 I- Mpublic class QueueImpl implements Queue {" A+ `% u+ I7 J; U* P* e
    " a) y' a% d" J( r, l
        protected Object[] element;
      Y% i$ V. _8 c5 w, Z
    & w/ O8 Y- d  f) g- J1 h    protected int elementCount;8 R* d3 }7 Q4 S7 d" i3 f
    % }" T0 V9 ]$ f5 ]6 J# V1 n
        //队头
    1 B7 e# X5 Z' D! u! I    private int front;
    ( W' a% p8 i) D) W& v& x5 b6 C) a* h9 _) S+ x9 L
        //队尾9 K! u5 e5 i6 k2 D# o
        private int rear;
    : g$ j: g+ }9 R6 \  {# i  \* D, l3 P+ ?: n+ Q
        private int defaultSize = 16;
    9 z/ N! [1 o5 K, o1 E
    5 g  i1 \# G; ]: u! c    private int maxSize;
    9 G0 [+ O* S6 [% q0 ^& c* J9 y* ?+ }' j; ^+ ~2 T2 y9 [0 n$ B
        QueueImpl() {, @8 m. O' ]1 S
            element = new Object[defaultSize];0 ~) ~; D8 \' ?
            maxSize = defaultSize;
    - D8 z  k% Y3 \5 u        front = 0;# x: G; K( }6 u. \" E
            rear = -1;# c* n6 M2 Q: C* t* |1 \0 G5 `
        }
    5 n8 t/ W1 ?; ?. U" {* |( b6 ~& u0 R  h3 v9 l
        QueueImpl(int size) {4 j+ L' V/ ]. A8 k
            element = new Object[size];4 g3 u1 i0 t$ S; \- F  p( w
            maxSize = size;5 u* r  X* P9 n0 d" s
            front = 0;) U& ]' O# ~9 d. g( a) j
            rear = -1;0 r6 u: _2 B2 T* d9 u
        }
    + T3 i% p$ A3 Y  `& u2 t" T! x: u6 T8 @& w+ W9 I6 c4 ~% E
        @Override6 n( _* f  ?3 g  {" o
        public int getMaxSize() {* d8 A  X; n9 q/ H0 M! h
            return maxSize;" Q# ]* _! i# k6 _
        }* m. ~2 Z; M- s% x9 H7 ?1 U& A
    ) Y3 l% |8 x& ^* s' K( E
        @Override
    8 u- L! X- a" L8 p- E' Q    public void push(Object object) {
    ) E6 L$ m) |7 L9 f        //如果元素个数已经达到数组的最大个数,则进行扩容
    + y" @% F0 T) t& ~: K0 c5 e3 |        if (elementCount == maxSize) {
    + v8 m5 Q' z' c$ ^            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    # Y7 k; X' o% o& e5 w% r( d# E        }. c/ R9 ~2 Z$ _3 v9 J
            element[++rear] = object;! w, A) Q0 ^6 J- {* Q3 @: C
            if (rear == element.length) {
    2 ~6 h  L' i) S: w            rear = -1;
    & }# w- E( g+ \/ Z9 n+ b, H        }0 G( Z; e; B: t$ b* g8 y
            elementCount++;! c, t, P: q! i2 @" t8 s
        }( g; i* {6 ]7 a% {% P/ f

    ( m% M3 ]3 j" l% M  ^    @Override
    4 `' J8 ?# l) m    public Object pull() {
    7 }' o1 Y$ k2 b        if (elementCount == 0) {6 b6 |1 c: ~! y$ R
                throw new ArrayIndexOutOfBoundsException("队列中无元素");
    5 F/ P" e/ i) H' H: j3 q/ d+ I        }
      D% \9 e. P" }; l1 C        Object object = element[front];
    " Y  N/ S8 u4 Q) C* _* j* g# y        element[front] = null;* {8 Y5 I, o! w/ {+ N7 {
            front++;
    , L. ~0 F1 G- v$ P  k( F( h+ s        elementCount--;' y! j0 ~$ U  [
            //队列清空,队头队尾恢复初始值
    9 Z0 u, _% e/ K2 U# L, J        if (elementCount == 0) {9 N: v% o6 L- x$ A: z, P
                front = 0;3 S7 Q( {7 g& m) I
                rear = -1;
    ) g6 T- }1 r) w7 @- X9 Z        }" M+ g( n$ s' x# M0 P# l9 i4 y* X' X
            return object;' S& F2 j) t! K1 W& y; ]
        }) G4 j" I. h3 @' P

    ; e; b/ x0 J0 X7 h5 e/ {* f    @Override; b& ^, J$ r1 C6 T5 L# u% i
        public int getElementCount() {
    & ]" W8 W2 i  ~/ g5 `        return elementCount;
    # [6 ?$ u6 J. X+ B    }
    " t, g1 D5 i1 y2 e* A' a# |  n8 b; T% _! I& j
        @Override
    ! Y2 h8 v/ P( u* I9 n' w    public Object getFront() {
    6 p+ @; H* d! N' Y9 z        if (elementCount == 0) {
    7 J% P4 G4 L* n4 D: ?5 V0 b( h            System.out.print("队头无元素");
    ) R; s" [0 u" r8 U            return null;
      Z6 b/ D% V  h7 V4 N3 e6 X0 Z6 W        }+ O) {$ V" l" @* `. u4 i) C
            return element[front];
    / H- Z5 p3 ^; q/ T% w. o7 i5 y    }' B& _  @% R1 v6 Q* K/ V

    0 q  f8 P" a$ y# I# t9 w- F    @Override: E5 k' P8 ?+ z9 ~& h/ X; E; d! M
        public Object getRear() {
    3 u. m2 R+ r' r$ R9 v        if (elementCount == 0) {: B7 P) ?; I# ^( v5 i7 l7 V2 T
                System.out.print("队尾无元素");
      r  o1 g- z( D% y, w3 ~6 g7 F            return null;
    " u2 [8 ^' r) U# k, n' M) h3 \        }
    & f4 a) k+ t$ J/ v, W4 @. D        return element[rear];
    " i6 j: Q8 g. K3 v% Q, `) C* t; r    }
    " p9 ~+ t2 W9 |* v% o) Y1 _) @$ G2 @- u+ n: [0 `
        @Override
    : o" v0 q" ]" ?, @    public void traverse() {( O0 _2 f( e5 Y; a3 S
            if (elementCount == 0) {9 B7 P; e* I: O8 a
                return;" h4 V+ I/ `7 G+ o; W# I6 i1 z3 z
            }+ V# u( t5 e- F6 [. ~* j1 w
            for (int i = front; i <= rear; i++) {
    * B. d1 X5 K9 g6 E# k- G            System.out.print(element + ",");
    8 b& @, }5 ?: @5 [( m        }
    5 A/ z) ~0 Z6 t$ b        System.out.println();
    2 T6 t  N2 I3 S: J    }0 J( z0 j6 k2 i. M/ b* a
    }
    . ^6 y3 x  c6 n& O' q
    : v7 i* j, R. C5 S5 i4 l, F, B3 V! i8 x, I2 F" d9 u) ^
    3、队列的测试% A0 |) G* G; W/ l
    public class QueueTest {" j1 n- G/ ~, M' y8 G3 B- C
        public static void main(String[] args) {3 e' ~7 t/ O" d; k1 I; e, X
            Queue queue = new QueueImpl();
    6 W/ z& H( M1 Y2 j. |4 L
    : \9 A% ]- }  H        //获取队列大小
    - h6 A* q. X# q  l& Z        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());9 I# ?2 b) x; q" M2 e( d

    : x. C) O0 g7 E        //第一次入队列:压入1-15
    * W$ r% L2 R. ~, a        for (int i = 0; i < 16; i++) {
    2 g, `- ~) \# Q1 p            queue.push(i);2 n! ~8 A: d$ s" ^8 F) ]( p" z: R
            }+ v1 l  T: o6 \$ @$ O) I
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    ' ]' x8 r4 X9 j5 ^        queue.traverse();2 E  I0 y3 X2 L/ O
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ) i+ D3 O  A% X* A+ v8 z$ Q9 [+ j% {. F
            //第一次出队:取出0-15: L9 O4 {6 X5 t5 O5 Y
            for (int i = 0; i < 16; i++) {
    4 X0 y$ y# S5 J; S            queue.pull();$ s4 R* Q  ~5 `7 G6 p/ G& m1 a
            }
    * C" b* s: N! \! p% f3 ~        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    1 v8 _: h3 I# w        queue.traverse();
    . H3 Z2 z, q  g$ R/ `        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());7 T' D- C4 F% u/ ]) X" s0 y
    1 _7 Y  n0 S* N
    2 v1 H1 f' L: Y+ F+ J/ o3 a
            //第二次入队列:压入16,31
    * f! F5 `$ z# R9 }1 [        for (int i = 16; i < 32; i++) {
    ! A. l$ J4 K* W. O0 ~5 u            queue.push(i);. a! O  R- x' v
            }% Z* O  @% s* r4 y! B
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    6 r! C# T/ Z, W( q) M% ~        queue.traverse();3 G% i# v/ S; P7 S/ q( `- D

    - J0 m+ |6 v  m, U4 |" z' O' x3 N4 e* }7 b5 T
            //第二次出队:取出16-318 a' R4 T* z- _
            for (int i = 0; i < 16; i++) {0 t( G& z3 F2 P8 g$ D
                queue.pull();4 Z/ C/ p+ x" [7 D" K
            }
    * y. m! X& ]* l; V" F8 K" ?        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());) P! D+ d% o; c2 S9 G- u
            queue.traverse();
    # }6 F; _" ?7 }/ W5 E
    - @$ S9 s. E# u* ]. K        //空队列出队报错
    & x. h" u6 U: e" _2 Y' Z6 _        queue.pull();
    8 z  G" m$ N3 Y. U
    * g9 X, q9 \& v) s    }; F8 C% Q" O' l9 q
    }9 u2 e6 s7 K2 K3 E; i2 ]0 {

    $ ~) x/ I. ?  A
      S  Q! R  ?7 `% ^# U1 G5 K
    4 O* |1 X9 p$ z. H9 p' S/ h- b; X$ \- c

    ) _# V) G* G. z* M; n! L6 A' ^

    3 p( l; G6 d  e2 b( q/ I. R3 X
    0 ~, x; ^5 X2 A1 d5 j2 n: Z# @6 L1 f# C) u) o

    ' E" |2 n7 }& r5 ^/ P+ K8 s7 Q) |6 e1 F8 s8 e8 i
    7 L7 I. @4 }' w. e( f
    9 ]) d" w7 u" n# J" ?

    1 x% Q7 a! ~5 U" T; k' h
    : z- @. c, `$ z' D  G6 p————————————————
    % ~# i# `% w' B4 ?" I2 e, p版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    + a8 g4 {  X! H/ @4 _6 Q% l原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    9 n1 L' S; b  I% i4 `- Q; q( E
    " y. x" f' G. L  I4 Z8 E4 I& a6 P7 p
    " |7 S3 q4 Y! h( D; u
    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-6-9 18:57 , Processed in 0.317756 second(s), 54 queries .

    回顶部