QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1729|回复: 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
    & h8 }2 M# j- v$ b" S  n4 T
    数据结构——栈(Stack)与队列(Queue)的手写实例" w& e3 G0 m7 P0 h/ ]( R

    ( R, Z. e. N# R[color=rgba(0, 0, 0, 0.74902)]文章目录

      1 k6 Z# H1 X  n& ^% |* z
      • 一、 栈与队列的定义
      • 二、 用数组实现栈8 }8 M6 g: X. {. r# F) Z& V
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试) W1 \5 s! Q' y! y. _/ E
      • 三、 用数组实现队列
        / [- [, s' G% ]: U0 U% L
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试( b& r& ~6 X4 v; n# E) u* i# |

    1 R% I% S4 R' A; X# D- w* Q1 t5 Q6 @9 T7 ?% a  F2 Y
    一、 栈与队列的定义
    ( l) L( C& N6 Y7 \5 ^栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。& I* }, u% k! h
    1.png   Y6 |1 \5 W4 C4 G
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。0 N: t' k2 W7 r7 s% _: a
    2.png 6 t  x, B/ d5 M
    + @$ v5 y+ [8 U2 a* K6 r6 U+ J

    " T# G: n4 Y- s: K6 l1 E二、 用数组实现栈1、栈的接口定义" v$ h( B2 d4 a5 k5 j' O
    /**% q! u. b8 k* ~# X& r* h
    * 定义栈的接口
    2 B& t9 b% }8 K *7 @3 p/ C* D! l2 z, W$ F4 k* D8 [
    * @Author zhuhuix" W( u" P0 c# h2 C7 S. o+ N
    * @date 2020-05-01% P# s& A- Q2 v8 }  v+ |+ |6 X* f
    */7 A, k, n- s. y. C% ~! x. I5 s
    public interface Stack {
    - x* W. y' o: G; y    /**+ f5 u9 O( t4 X& E/ G
         * 入栈2 z. S/ X. ?3 N: P* P
         * @param object 入栈元素
    ( k9 k2 z1 h1 r     */0 J  @. ^  }+ |4 |) J5 x
        void push(Object object);
    ; _8 ^6 p! k, T5 u0 o% u' N
    8 S* N* h! n. ~0 p: q% |: J: s    /**
    : W$ X& i) i6 e3 _; B: L     * 出栈
    " a0 _3 H* q* U/ M     * @return 出栈元素
    , M/ [5 p8 |! Y; {     */" V" Z# S1 Y# ~# Z
        Object pop();
    , N6 [; b7 `) _
    ( s" R/ a" X9 X& H) w    /**3 y! @0 ^! L  A+ T- H
         *  获取元素个数
    / ~( w6 ]; K7 V4 O8 ?0 h8 X     * @return 元素个数# ~7 ~4 ^  H. h/ \  R- j* N+ b
         */" Y# K; Z1 x/ e
        int getElementCount();- N7 v/ u5 q9 x6 ~" w" H  R: w) c; T

    1 M( N) g4 @4 L    /**
    / D/ R0 X& Z# H     * 遍历栈的元素4 z7 H8 Y5 l; F/ ?0 {0 |0 K7 B9 Q5 H3 n" E
         */: C: }5 \" H7 {2 P. T6 t
        void traverse();2 u6 r9 v: v! E$ H* u8 k  }

    2 t9 Z8 j8 _, m9 s  {* `- V7 R}8 ~7 \! h! w5 E1 l+ t
    2、栈的接口实现/ ]2 M, ]( T9 b" `
    /**
    0 {% }& o( B' Z& _0 m$ h * 栈的接口实现
    / {1 B5 l. M1 k  R; V *
    5 R/ Y' ~6 q7 v8 n8 q * @author zhuhuix# N/ {6 f0 p. q5 a8 i
    * @date 2020-05-010 U6 C, f, i6 l4 Y. E% l
    */
    ' W2 O" q+ i7 ^; j# w9 S6 F: fpublic class StackImpl implements Stack {; M0 ^" ~+ O# c% a" I+ {
           
    ) I9 J& }" @- {$ @. r6 ^2 Q; `    protected Object[] element;" E+ m0 F0 N* m" z9 x/ P9 Y
    1 B! b6 l# x$ U6 {# J! L
        protected int elementCount;
    2 I- H/ V: ]& }, I* j3 \
    - p% b* s3 I% a$ X1 \    private int defaultSize = 16;
    ; [7 ~3 T' t5 s1 |3 o/ b, e* c; [9 `: X; l4 r0 r6 U
        private int maxSize;/ b2 y) s' [  z4 S5 k
    " M2 W2 x$ I2 Y7 h  p+ z
        StackImpl() {! ^( I& n' o! ^
            element = new Object[defaultSize];
    ) u2 X0 p: ~( l        maxSize = defaultSize;
    8 v% S7 |1 N, ]& \$ n: D, ~( R4 s1 X    }/ n9 W; O- V9 e9 y+ B3 G. F: u

    - j" s4 O! o0 c9 B* Q" V    StackImpl(int size) {$ |! p" D, v# u; q- S
            element = new Object[size];
    . k: R: |& S* \9 S5 d        maxSize = size;
    * K- e- c; {3 F  O8 \: H- d' l    }% q7 b+ Q! c* ?* h  ?' C. \

      f3 G" ^# G7 A$ x; o( R, p    @Override- F, U) Z; _6 U: W
        public void push(Object object) {! ]5 E  x2 F; G3 h
            //如果元素个数已经达到数组的最大个数,则进行扩容
    ( z6 b9 C% i$ m3 H        if (elementCount == maxSize) {
    : s& f; d0 N3 a" I! p            element = Arrays.copyOf(element, elementCount + defaultSize);
    5 ?0 y% q; n. D8 P* y        }4 N/ t; U! T. Z8 g
            element[elementCount++] = object;' p; S8 G* t( u1 m& J- G

    2 P! L$ Y# L. v3 u% w* F    }
    1 T" Z# v* A/ F4 T        // 本代码未实现数组的自动缩小,具体方法可参考JDK4 s! r1 }9 T5 c3 b! s
        @Override. K/ d" t8 S4 n- H( T/ f' j% G, _" ]
        public Object pop() {
    1 B+ @# F) f) ^1 Z8 q7 F        if (elementCount == 0) {
    % }% ^* o2 q# t% ]4 w/ _9 f; @            throw new ArrayIndexOutOfBoundsException("栈中无元素");3 N& z; I! K+ Z- {' Y
            }. u9 Q+ ?2 u6 ?5 [0 D; G* E1 k2 E9 c
            Object object = element[--elementCount];" ~( y, T: u2 P! b
            element[elementCount] = null;
    : Q- ^3 _! m1 P" s        return object;+ ]2 y; D! q3 Y" N4 N, ?
        }
    ! m3 F! a; T& n! v7 w3 p+ Q2 n# M6 Q7 E0 t6 R' R
        @Override- u9 a3 [, x  [0 l% Z7 ]/ p4 V' m
        public int getElementCount() {
    ) Y: @. e: b' B2 x: F$ S        return elementCount;
    # T. ~4 _( `' Y9 a    }
    % h) G  f6 C) ~9 V2 ~
    7 ^5 C9 x* c; L) s, m    @Override
    7 R$ _% m9 K9 l    public void traverse() {
    ' D7 x, z- p" [5 x        for (int i = 0; i < elementCount; i++) {
    6 ?0 C8 r5 k; t% i            System.out.print(element + ",");: E. K7 T3 K4 p$ r# L
            }
    ( n6 Q2 v. H4 x: y! M. O& `0 w3 i, C8 s        System.out.println();# Z1 L5 s  [9 a6 |( H' x! y: e7 W
        }, d9 l1 L  V  d
    }
    * W' \0 t, W' s& l: F) b, s" y3、栈的测试
    0 J3 @+ W% k% S) A- i1 npublic class StackTest {
    7 B( V5 s1 L: v3 K' W% t' I    public static void main(String[] args) {9 d- @9 h, _8 Z3 M
            Stack stack = new StackImpl();
    ; ^* U6 r* ]0 t2 ~2 u8 B, t3 U, I* k: m6 ^- R
            //第一次入栈:压入1-15
    7 Y- z% H5 X; N5 \1 C( i) T        for (int i = 0; i < 16; i++) {
    0 T5 w; s# i2 ?: S            stack.push(i);# j8 Y& v, m: q/ M1 S
            }4 _' l8 |+ n. J
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());& @* M/ \( N2 E$ Z' H: Q
            stack.traverse();! P- L5 g: F% i) O& P. b1 _
    - |, A7 E3 V1 q. I) W6 {3 @& A# \
            //第二次入栈:压入16-31
      {5 f' a' O2 z0 @9 @& I# @2 c        for (int i = 16; i < 32; i++) {
    $ o" p6 r. k) w  }$ ?8 I' i            stack.push(i);/ k+ C) g5 @( L" E% R
            }
    2 n' _6 c3 e0 ~- Y6 P. e% V        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());# ]8 E+ D6 k6 m( m
            stack.traverse();& c2 O/ Q1 M7 E% ], Z, A
    - H- \) W, x  G7 ^. k
            //第一次出栈:取出31-16
    ! j0 \9 U$ Q: ~! `6 i8 y9 `' P        for (int i = 0; i < 16; i++) {8 ~( d( E  o0 E& X* R( B7 w
                stack.pop();
    ! {& ~% m( Y6 Q0 y2 A        }
    7 A) i, J$ _8 q        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    & H: W! A5 n, e' b        stack.traverse();
    + ?2 Q2 h7 q7 e1 k& r$ F1 s* t3 k8 o/ ~2 s  d( u" D# V
            //第二次出栈:取出15-0
    & p1 Z1 z" U- J! Q* F        for (int i = 0; i < 16; i++) {0 g3 P) Z: U3 C. P) ~7 a; L3 {
                stack.pop();' F% ~9 p3 z2 M9 R0 q: g
            }
    5 D7 V( g0 K+ F2 z& S        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    7 X" @8 P) R# ~" W5 @4 X        stack.traverse();
    , [: h" P  Z( B4 K! I! S0 H9 K) E7 C* _
            //栈中无元素,出栈报错
    1 b5 U* I8 B& |        stack.pop();1 Q. h# Q8 C2 s; C/ L

    % ]) R) d! [* b8 F, {7 E4 `% O5 w    }
    ( e. W0 ]2 d1 \4 A! N1 t}& z9 x$ x2 U1 l) Z& W3 c* a
    3.png
    3 l5 w  G  i/ S8 {! j& E8 N# U% M, b4 e

      `) T; s5 i5 [! ]% d- S4 L; S8 v: `. `$ u) x; \
    三、 用数组实现队列1、队列的接口定义1 c1 o) L$ U3 _8 r
    /**7 g) D4 l2 `8 D
    * 定义队列的接口9 `4 s/ B9 E( ^' ]( b/ J0 F2 Y8 e  }
    *
    ' J$ c" `( }0 u0 z9 e- T* U0 c * @author zhuhuix6 Y! b% }$ u. X# Y9 K) S
    * @date 2020-05-010 f, B% u# I6 j: d: j
    */
    9 t3 q' w4 y( M+ l! P: cpublic interface Queue {8 f; u" Q/ L0 I

      s+ }" ^! j2 h9 M7 ]    /**5 y- n; F0 N6 n" S& m" Z
         * 获取队列大小& z0 g# A% N- r2 @. C
         * @return 队列大小8 }9 g0 ~$ `* Y- w! _5 k3 D3 ^7 G1 [, t- Z
         */
    , r4 k2 U9 y) }. @    int getMaxSize();$ @9 D" R7 I; r! e* l0 ]# c
    + L4 J. Q/ t1 R3 f. h& B
        /**
    - ?" {3 I1 n* B  c' I! Q2 A     * 入队
    " @0 U$ L  R& t+ K6 M/ r# a     * @param object 入队元素
    0 P+ L: H+ ?- U# r! N' D3 v     */2 }; D! M& q) K" S
        void push(Object object);
    * [7 `% S3 v# F5 |
    * r  g$ P, @- t: t0 H# ?0 T  H) Q# G    /**
    " X! K) u7 x7 w$ \/ a6 |+ C     * 出队6 K: O: c% a/ y* Z: E* f
         * @return 出栈元素
    8 s& R; \$ u* w" \' W: d* _+ f$ J     */
    ) Q+ _9 {6 a5 I  H% `, e    Object pull();8 L# Q- [$ F- j* G; b% h/ A$ O
    # \  K# h5 j. w7 n
        /**
    : a5 r9 c6 z" X     *  获取元素个数! j# D+ E7 c8 x3 U: f& K
         * @return 元素个数% d* V4 G/ {+ c: }9 K0 G
         */
    ( B2 f9 |8 Q- S% u. C    int getElementCount();: M; H; L8 J1 O
    . g; z+ o2 b- @$ P( F
        /**
    6 ~( u* d9 F1 H) K3 O     *  获取队头元素- q9 u* V3 G$ l7 r% s  h
         * @return 队头元素0 W. ~1 M' }* z/ n2 t
         */
    # m0 F1 F" {3 `8 l    Object getFront();
    1 j5 O! [- E7 r8 W) I5 P$ _+ X
    7 b& L0 P0 W. ^; Y& d$ @, h9 R. E    /**' d; P1 A2 l8 [8 w! S
         *  获取队尾元素
    ( D7 Q) J  d7 T     * @return 队尾元素( ^8 m; L. q: \1 ^/ f3 Z" a5 [
         */
    # L4 S2 r# j) W) ?1 O. f    Object getRear();
    " ~( P$ O, }+ K  Q) ^
    4 V* T7 i6 \& W    /**7 z* ]6 \4 d  I/ p/ J6 K
         * 遍历队列的元素
      I0 y  j5 x8 d# N     */, r7 p8 [& C- r9 D
        void traverse();
    " M6 ]) f- u$ S( z9 t+ |" g0 q% ^) z0 u}( B( L: Z1 b9 ?( [) M) L
    2、队列的接口实现
    8 B2 q* [( K' p3 _0 Y6 [/**" K7 j. i. l6 l' V6 K0 I
    * 队列的接口实现4 D% A! _) l# [2 H
    *8 y1 Y, N" p- g: K9 Q7 {8 K7 m, K
    * @author zhuhuix
    ; b0 n0 e4 s0 N* p5 _  N7 Y * @date 2020-05-012 Q$ W; S, j) c! z
    */
    . S1 ?) X* q9 Apublic class QueueImpl implements Queue {
    ) W# _/ T! B6 V8 f( f6 R9 W
    " m& N% r: t7 Q    protected Object[] element;8 E) Y" o% s3 [7 [! l9 l5 E

    % X7 }5 _7 ^2 D    protected int elementCount;( v* P: J+ u  O% r
    6 C4 t3 n$ K5 L0 Z2 C3 U! {- Y! y
        //队头) |; A- x+ z3 \! {; G, J$ G
        private int front;# E. t+ Z3 [# \# S8 e

    / Q; N% v' G% d    //队尾0 |: K& n7 n$ a7 Q" @  [) ^" ~& p5 p
        private int rear;
    & q# ]4 b; A5 ~- m
    2 G: S9 t4 m: @) R    private int defaultSize = 16;4 F# s4 j7 Q$ n, Y

    ( R: ^+ q& s$ n    private int maxSize;8 U% {8 _, O6 k5 H: w% c1 H8 K

    & s! E/ Q% Q9 C    QueueImpl() {
    ; r1 l  _( a. b$ l/ u* {  m7 h* t        element = new Object[defaultSize];
    7 i+ j/ m  e# D" T. w. Q/ e) @        maxSize = defaultSize;4 G- j; `( T6 Z
            front = 0;3 x6 q" Y! |) S: X7 m& F, b
            rear = -1;
    8 {8 z  w* }/ s6 y4 F    }! h! y8 p, s! k3 E  J
    & C/ }/ s$ N7 w" A) f6 q! p5 T3 Z" C
        QueueImpl(int size) {
    , v, J; F% S9 T4 j* ?        element = new Object[size];7 U9 k4 e, r  S( x6 D; j; T! x, ]5 J5 b
            maxSize = size;
    * x4 \$ x! o& ]# ^$ |3 C        front = 0;
    " x# m+ R1 s3 S& Z% m8 a        rear = -1;
    ( A1 J' V  `1 j. O7 j3 `( d" |/ W7 u( q    }
    . U9 w% j# }- E2 x+ C' y5 j3 j1 A. s$ h0 Z& O4 o! j# V- D7 N* D
        @Override
    3 X8 G+ u; l7 f+ S0 x    public int getMaxSize() {- S& n, q$ I* h/ L- n
            return maxSize;
    " X  j8 r5 i3 C5 I# H4 D* P2 t    }; g# d3 K0 o  {4 j- {' w8 o  K1 G
    * z5 ^- y/ f& B$ `5 y3 w' m
        @Override
    " o8 f/ P. g( h) t* j, J0 ^7 ^    public void push(Object object) {
    3 S4 ~& o; B$ ^* T7 k        //如果元素个数已经达到数组的最大个数,则进行扩容- f" p% f% a* Z! {
            if (elementCount == maxSize) {/ U% o$ D" ], ^1 f- w( K
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");+ g3 E# ]! v9 Q3 s3 @" b
            }# |8 z2 r- A! D$ T4 f. G
            element[++rear] = object;5 M6 g, \0 J# m8 X
            if (rear == element.length) {& l5 G, y" F. U
                rear = -1;
    ; ~& G) B& F! |9 L        }
    6 e% Q5 }* J8 O6 {% f) a. R' [* s        elementCount++;
    + S; d; ~$ E& r# I* J8 G7 ^: ?    }" x1 q5 L$ c/ R. Q  B: w! G

    ! T- j) P7 x" F8 _4 b- {    @Override6 D) C) r6 R9 ^( P$ ]0 Y& ^
        public Object pull() {8 Y; @" B& c& X3 V6 y
            if (elementCount == 0) {
    # O5 `) g4 Z: c9 P6 _# ]1 }% E            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    8 i+ n( \5 I. e' k: @. P. c        }
    ) N& E7 i+ i. I' X7 E) p4 s        Object object = element[front];
    , x# L, M( j1 t. R; W8 H' E' n: d        element[front] = null;+ ?' j/ S2 F) e( V% f; j
            front++;
    - {( C2 J/ f9 T        elementCount--;
    4 f4 ]5 o" N4 K8 B" M, [        //队列清空,队头队尾恢复初始值
    * k& k& g: D5 l- R% C2 C, C        if (elementCount == 0) {) W) \, a; Y6 S$ a2 E" M$ Q
                front = 0;
    ' z) `4 x8 x: n            rear = -1;
    ! a$ H; c5 I% C        }) p* b: I2 f! ~; Y! D) d
            return object;3 i2 c" C2 v- X/ V: g9 p0 t
        }
    6 c, \' q* q( u* [6 |( a8 `6 _) b2 H4 X% o2 f
        @Override
    7 k& p0 K( k6 }" w. o; A    public int getElementCount() {
    . u/ g$ A0 v  v5 @- z' g4 d: p        return elementCount;
    ) {" r. W2 o2 E3 i" h7 a    }# F& {. q' z7 s7 P' T' s+ b: h
      N8 R" R0 i) `4 f4 L
        @Override
      ?2 Y% k8 }9 }: h7 |6 m    public Object getFront() {& P. S3 q. H0 Q3 B# W3 t+ b! ~' N
            if (elementCount == 0) {
    * E& m6 k6 i% c2 g            System.out.print("队头无元素");' c$ D5 Z/ {. G* \1 Q/ R
                return null;6 c" m* B  M. N5 e5 Q' c7 P
            }
    + u5 T! e0 n2 ?: o! R8 d        return element[front];2 j7 L" W+ ^& ]* y
        }
    ; Y7 d6 O& F6 [1 L% B7 Q
    0 @$ p, P+ N0 `$ m6 L, Z    @Override
      {8 y. i! u% H7 U, W, I. [    public Object getRear() {
    % c+ Y4 M" ?1 [4 R3 O        if (elementCount == 0) {
    ! i! O1 ?9 _" w  Q. Z            System.out.print("队尾无元素");) Y0 c3 _& I  c$ O6 E' j  g& _
                return null;
    , V. c6 R1 m/ d+ [% _% M+ h" j& N        }; `& j5 F2 ]5 g& E1 v2 }* C
            return element[rear];
    5 ~/ q) Y8 d  j6 L    }
    8 Q/ x9 A. U8 `5 ]3 l4 M0 S" t" x' w9 N0 B- j
        @Override
    $ ]- B( k$ E$ b# p( h0 u    public void traverse() {' g! D0 _- L8 g) {- |' @
            if (elementCount == 0) {) {+ g7 X3 Y" r9 V
                return;7 t* {0 E, w7 n, t+ _) ?6 y' H; E+ z
            }
    8 s3 O/ a, p! F        for (int i = front; i <= rear; i++) {1 _- ~; T" K* M; U9 x
                System.out.print(element + ",");
    - ~# H8 n1 U; M: J        }) V: }6 N& ^! m
            System.out.println();
    ' V2 q  a0 r' B- F& y    }! \3 u5 i$ \* l4 E# n% [! i
    }
    / x. [! B' l% R2 b, U+ |' p1 C4 y" a8 h: G# c6 b
    ( r6 [  @. K! Q5 s! N; E
    3、队列的测试  n& C8 B) A: I& p* W0 l
    public class QueueTest {
    / M7 M9 b# G& ~/ V7 I" H' [- ^    public static void main(String[] args) {
    ( z4 P6 d; D: ?% _" A  z2 ^8 A% E        Queue queue = new QueueImpl();
    ' a" a) i+ v" W" f0 U% Y) J# i
            //获取队列大小
    6 x) n4 T/ P/ A, H! F" L3 ~$ ~        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());% k7 N; T) p, }$ L6 X. ^2 e) ~

    / ]' X% U: S7 @+ a4 X8 N9 }        //第一次入队列:压入1-15
    7 P, d& n! o: V, Z- W        for (int i = 0; i < 16; i++) {, u- G; n- X8 F( f5 t' v
                queue.push(i);7 `$ p6 [; y7 k  F0 [( Z
            }
    ) y) f5 `! j( i; w0 t% x* K# k        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());6 I. w+ M, ?( e3 ?& i* K& X
            queue.traverse();
    + s" l" t$ f( Z8 ]# U# [( v% Q        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());5 m/ f5 B/ s& }8 ^& e/ i1 @: ?
    , _% ]# N- R; ?3 n
            //第一次出队:取出0-15
    ' X: F7 s. N8 V        for (int i = 0; i < 16; i++) {8 A* D" n' ^/ g+ r
                queue.pull();
      f* G  |2 z4 E# I$ w7 h& Y- o        }- B5 Y8 X. R' F) n' j1 }2 n
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    % C1 P$ O$ `8 h- X" e2 a# Z6 `        queue.traverse();
    3 \  S4 p0 [& q( f3 S8 O  G7 o  ]        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
      _& G$ E. l/ Q. ~( i" e  w; w3 Q: o! |: T9 p$ }) _3 q

    . {7 \- \% d5 a1 v( V: q        //第二次入队列:压入16,31
    6 p4 o  i1 c. y$ K* c; x8 i% M        for (int i = 16; i < 32; i++) {* G6 h8 F: C+ \% m
                queue.push(i);
    $ A) \( j  W; R1 Y) D        }
    % P( F) I' _/ w8 e6 ^- z9 Q        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());4 x! B$ m: O  y& L- a' s' Y
            queue.traverse();
    ' K! i4 j8 b+ P( B; F# V4 H9 L5 {) f" a- H# }  ^6 Z9 B  R8 p
    8 Y1 g2 K) h. Q0 `8 o3 F5 |0 {
            //第二次出队:取出16-319 E/ o! T9 K8 z* j& d: @
            for (int i = 0; i < 16; i++) {
    ! Q8 W8 U8 w) x8 t6 ~            queue.pull();
    9 w' x7 J5 @1 ~8 ^: n        }
    # w* ^; D' b7 n: Q) d. ~        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());/ e3 \) ?! ^' ?+ g
            queue.traverse();2 u1 S! l- a+ q& y

    ! o! p8 k' U0 U- E# R& [        //空队列出队报错
    3 L( Y2 r- r/ x1 j        queue.pull();0 @* c9 O/ m( E% Y* ~& I

    6 |( \1 q' x! T/ P    }6 h  K" O3 X' j. c7 A, G
    }! i) Q* l+ }' r6 t% Z; ?
    . S: {; F+ ~2 b
    - O& a; W0 f/ H- }- B/ V3 {: u+ U

    0 ]% g% O/ a/ p4 K
    4 i% B( A3 }  _" _5 b' j" S! U3 @: c& y; J8 y/ U

    8 F% j& ]% y+ s  T' r: I, W
    + c2 [. [" Y2 a% G$ J
    " e2 q' o4 H, A1 i% o8 U, i' C' j- P, V& D
    . e5 U7 O" q9 B3 L

    0 N9 ?3 w$ g8 s5 G* H
      U* h7 K$ T* |" I2 o: V# L( s" v0 I
    2 Q5 w7 q% Q/ m: c" f! K+ _

    3 o% X  d/ n& q; ~  l' k9 `————————————————
    3 I! r; U9 `7 |- ?: D! a- C8 c3 M版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    8 ^7 E: L- e  o. ?4 K) Q原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785( e! |) D( a5 C; z# C8 Z
      L" C, J$ |1 k! j1 U, I( k, D& X
    , b8 R6 n4 p7 J, w6 r1 H) I
    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 06:35 , Processed in 0.463445 second(s), 54 queries .

    回顶部