QQ登录

只需要一步,快速开始

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

    9 v: P, \0 V) S. l数据结构——栈(Stack)与队列(Queue)的手写实例; i2 X# A, V) c7 A( f, n0 z
    . t8 M2 Y! |  P7 T
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      5 a8 `, x2 Z7 x: i: ]! g, W
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        % P3 s- O' y+ r
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          5 D2 ]* E: A: }  B7 {
      • 三、 用数组实现队列
        2 H# @: `/ D. S( Y' x5 \4 K
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试- Y/ d5 a/ h6 M% [  Q2 V- z

      ~+ {' f  {1 \- w' h% V+ E
    , W* W& S/ U2 w) m/ y+ O一、 栈与队列的定义$ Z0 B+ j+ c, h7 r% D
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    ( {4 r8 b5 n2 N) i, O! [# Y. ]2 M 1.png 6 l' I/ Q- [: S2 b; h' L1 G
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。. _2 {  k) i6 Q) r* V: a( D
    2.png ' q( ^: a) v5 {2 {

    $ X9 W0 P# G: r$ O
    * y. `* ^" l0 @( H5 w4 o3 x5 b  N, e二、 用数组实现栈1、栈的接口定义! N" G# t# X1 i, p6 w; V/ ]# S: c8 X' J
    /**. Q6 R, w; I1 ?. }
    * 定义栈的接口2 U9 Z" d' m. {/ S
    *% x# e7 h/ i6 l. l  ]% a/ x9 b0 W/ y
    * @Author zhuhuix
    . }) {: [. u" p# x& }$ V& h. X* K0 i * @date 2020-05-01
    3 A3 _8 E: @6 G- B" L9 |* w */! Y) N" v- I) k4 B! y5 I# Y1 _
    public interface Stack {
    ! C1 B9 V9 r* ^* x    /**8 j9 f; v* g0 k, s) j
         * 入栈9 G& V$ R  e3 `% z1 d
         * @param object 入栈元素
    1 n& Q' l7 [$ V) c/ a4 f5 O( i     */
    ' }: C; W5 a" L" V  Z3 L    void push(Object object);$ ?) {3 q/ C1 X3 y* a7 R$ |7 ]$ w
    * K( A7 Z1 }4 J! {5 I  a- r
        /**' q# u$ {2 v. c4 R+ V8 H
         * 出栈5 V+ Y4 r+ b+ {* V
         * @return 出栈元素
    9 F! C; d" [( }7 L     */( y" q+ {4 Q2 O, q, \5 t" u" x
        Object pop();
    ' _2 p0 Z3 l6 Y# g1 {, @8 r- x6 Q6 K; `
        /**$ l7 h' ?& ^0 v$ K9 A* e
         *  获取元素个数: ], x- |' T6 x; K
         * @return 元素个数# `7 y! I1 E& r* z* |
         */: s  j1 k2 c. H
        int getElementCount();
      \9 l  ]7 j7 ]
    0 a5 p1 D4 }( Z0 u- j    /**
    9 u8 m! C" y; M  N" @     * 遍历栈的元素
    / w' A4 ~, h4 V8 |     */
    / l" a( v+ Y; g3 J. v    void traverse();5 i- M  _# F# Q% @( z. M+ ]
    - v5 k# c/ ?" I: \
    }1 D4 F1 Y! R/ j1 {& T! C* e3 J
    2、栈的接口实现3 O0 j5 N0 l: M! o  T1 G, o2 _
    /**
    0 J  b/ G3 b' A$ V * 栈的接口实现  M: H. P! n% i2 X/ p3 d6 K
    *
    4 z% U) V" j" y" p: N * @author zhuhuix: O( q% @2 g" [% E9 u3 d6 \, `4 j" P
    * @date 2020-05-01, S: ^* e4 w% a- ^  h/ d
    */% d& @+ e$ O8 n8 R8 m  v
    public class StackImpl implements Stack {
    3 w* ~9 P0 }4 ~8 R5 s3 N8 d3 v6 o        * v' ?3 S6 ^( r7 }% Z& F5 c
        protected Object[] element;" t. u4 S% F: {1 u3 r! u
    : x: n( S' g( P
        protected int elementCount;
    3 Q" O3 ^$ k9 U% }  l
    2 Y4 \" L! r: Y! o* U+ t0 x6 `    private int defaultSize = 16;9 b0 O: @% k; @7 v* |: e
    7 g3 s$ t+ e$ O+ ~
        private int maxSize;
    5 g5 |: t' E6 A) M& ~/ ?" d( [& i, [
    8 N& Z8 l2 S7 Y6 K5 b5 E    StackImpl() {
    % a) W7 z4 I" f/ V        element = new Object[defaultSize];
    6 B, z6 J7 v& \        maxSize = defaultSize;
    ! j+ ?, A  o" H) e# O# u7 w& B    }5 c) v! B$ U1 H% B1 t8 i

    , t+ M7 X) }( O* @: q0 o    StackImpl(int size) {
      ~  D2 c4 @9 U: S6 I8 g' l        element = new Object[size];/ ?$ A8 y8 s) R* l% l
            maxSize = size;
    & W5 j: j& ^4 Z. H9 l    }7 K1 P7 ?- }; w

    $ a) w9 g% L5 O! x! n8 {    @Override
    / b3 w- V% H* P' Z8 @    public void push(Object object) {$ |4 Y9 P7 ~* T, A
            //如果元素个数已经达到数组的最大个数,则进行扩容
    * E6 j8 K& J1 u) E! p( ]        if (elementCount == maxSize) {$ B- X! O3 c  q
                element = Arrays.copyOf(element, elementCount + defaultSize);6 y/ [$ J* H4 G: d0 t; i2 E3 D' V+ f. ^
            }
    $ a; [; ]$ x# o* \3 `$ v5 J        element[elementCount++] = object;% E( m& Y8 ?& {3 u, W/ b+ u8 ]! e# N

    2 \% u4 ?6 y, A  @8 C; V8 H8 S    }8 j4 Z( y# N: J8 t7 A
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    , z, I( z: q" ~: ~6 X    @Override
    - A$ d# _5 I$ h. Y) X  p* K  m0 n    public Object pop() {
    : J( {2 H0 Q5 K+ u- e        if (elementCount == 0) {' D! D' b. b3 H  \/ S2 J1 W
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    5 L0 \, ^' s0 L" I6 @  e' r        }
    % h+ o' ^2 h' E7 O8 n        Object object = element[--elementCount];. y: q) K: l, ^5 X) ?) T
            element[elementCount] = null;# c, \+ S: E. o* R- d! o- ]
            return object;
    + I: K; x3 W5 V6 D3 f2 p    }
    5 b0 E% {' x6 X9 {1 Q( e% F+ g8 A2 W
        @Override
    8 m, \# S  i7 C    public int getElementCount() {: {1 h, U9 G( \% W' a$ T2 N
            return elementCount;
    . {1 r- ?8 Y  U( J$ O4 b    }# {* T) A7 x5 L0 Q* a1 E1 j
    ; t: J: [3 N5 z: \) o$ y
        @Override
    4 ^7 O5 \+ b$ L/ u) ~' Z    public void traverse() {
    ( j; l7 l: Y; p6 g  D        for (int i = 0; i < elementCount; i++) {1 P5 M) s; l3 H8 G
                System.out.print(element + ",");
    6 f; b4 y' i$ n) j, q        }
    8 t+ y: `! y% s, r        System.out.println();
    1 v- L: F! M- c* }8 J/ |2 ]    }0 ^2 B' k. V6 O! t  g
    }
    2 S% f) o' G4 V7 E: l) Q3、栈的测试/ P0 n/ e. C' N" @/ J$ c/ H
    public class StackTest {9 w1 c* F: e# M
        public static void main(String[] args) {& o5 y) c  U3 A7 u
            Stack stack = new StackImpl();- v1 R% D6 ]! ~- K9 X+ n
    , o( M% ], P- r3 A2 V/ H' x, Q
            //第一次入栈:压入1-15
    : }/ }8 |; h5 i        for (int i = 0; i < 16; i++) {
    ( H4 Y/ ?0 h, B8 g- m            stack.push(i);7 A$ J' n$ {. o6 L! f& L
            }
    : w" ~) F$ B6 U) y. J& O        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());6 [* S4 N4 _8 i5 K
            stack.traverse();# |% u# Q" z" }* I0 ?
    : ]" f, i) ]- w! w( J5 K
            //第二次入栈:压入16-31+ D  t, ?1 z% z& H, e
            for (int i = 16; i < 32; i++) {
    0 ~. D1 i) o6 h9 y- k            stack.push(i);
    9 g* J$ h5 R4 O5 X1 K0 G        }
    ) U5 q' F+ D+ E$ f+ f        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    7 ^# X7 O! ?8 k& s3 ~' h        stack.traverse();
    # y3 M0 u, ~0 W: A3 C+ {" M% A; u  M
    ; l: o* }6 {; y, z        //第一次出栈:取出31-16
    ) j/ [3 s( e* d/ \' W/ }2 @        for (int i = 0; i < 16; i++) {
    3 W8 e/ B5 |9 I0 C. i            stack.pop();
    7 H' {8 n% H% W: V* i        }8 ?3 G7 i5 K% w6 ^' h
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());0 ^5 [* R% X5 f" X4 o
            stack.traverse();* U! n+ `1 ?/ u, J! D& Z: P: u
    / z  ]; I3 h* i) x
            //第二次出栈:取出15-0; w7 }+ P" u- N' t# k8 C9 @' C% `( V
            for (int i = 0; i < 16; i++) {  o* N3 f4 c3 W0 b2 a
                stack.pop();9 b, U5 x9 C1 N
            }0 Y8 M/ C, }+ `* b& a4 V, n
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());% h% c+ m" \, p3 }3 C
            stack.traverse();
    1 T8 l9 Q1 S  v8 F, P! J9 I5 N
            //栈中无元素,出栈报错
    9 e- m' q8 Z, ~+ X. P        stack.pop();
    2 g% \! m+ c0 r, F
    ! G0 O9 g( Y0 }# `" c' a: _6 _    }
    9 `5 [% V2 R, `' p}9 x$ v4 c" f9 N8 G1 W$ A/ O7 b
    3.png - a; e9 a; _, y7 p% w$ v* C

    ; }8 [* u6 q" r- s) ~; c( ?
    # `' D3 z+ U1 q* K# @; x4 @7 L8 _; T2 j# q$ w1 N( d4 r
    三、 用数组实现队列1、队列的接口定义  p5 n. K5 A! \: Q7 T' o! a8 T. P
    /**
    5 S. N( H  U6 B$ P* P0 N* @& K * 定义队列的接口( D0 m! C. J& z- Y
    *- h4 Q! w- x# Z; b' l7 Z9 {/ m5 J
    * @author zhuhuix
    % z/ a4 ?9 o, i+ X0 G' P3 j2 ?9 h * @date 2020-05-01
    - S0 i( R) j: j" R/ y) f. P */6 {  F; H4 e8 g: j% x5 f& n
    public interface Queue {
    2 D/ d3 p) B) x3 I* \0 T* K, m- [
    ! d6 N4 k# f5 E    /**& A( A& ~- H* i% |; Z5 t
         * 获取队列大小6 W1 Z7 \! ]' i9 H
         * @return 队列大小6 B7 _$ ?+ c! T9 a- H+ e4 H
         */7 Q) c3 H, d5 ^9 t( U! v9 B0 u9 w5 H
        int getMaxSize();) w4 y" }4 U1 U: P9 I% M) h  U- m

    * l& L0 k( R9 Z. N    /**
    5 Z& y9 y1 E$ M) Q" F     * 入队) R, K6 h, d: C" s- r( _3 }
         * @param object 入队元素
    / F, ^( D0 r: E1 g     */
    : }2 S5 J" g+ q5 f    void push(Object object);
      t, ?. g- h  z! p" R& v
      A8 R3 u: {* i; F/ b; E9 n    /**
    + h2 ]  g) V3 o6 K4 W# Y1 ^     * 出队
    0 V& z+ _7 Y" K+ p4 F- l     * @return 出栈元素- }! L: i& E0 ^! h. p; e" c* C; X
         */
    / x, A2 B& a! i8 n7 q2 r  G    Object pull();9 j& g) p; k0 O1 j

    6 {; w. s0 r1 {% |. \) I    /**# Z8 V$ ~7 D$ T% `
         *  获取元素个数
    ; L' S- }6 G4 l     * @return 元素个数/ l# i7 O( ]0 m* S! Z4 I6 `
         */
    ' n3 V' _1 N$ ]+ @    int getElementCount();
    # Z% `' u9 ]3 e. c1 W$ ~3 o
    " R7 j) i/ q' q    /**. X! G: g4 {3 t: L& w
         *  获取队头元素5 y! C" z3 p3 g8 [3 e, Q# }2 e, d
         * @return 队头元素
    4 e4 t7 [9 q* r: L8 R- Q! a     */. @" U1 X0 \' c- T7 Y9 W9 W
        Object getFront();5 x; S3 B5 Z2 V2 j( @  e

    / {* g* }7 p5 T  u, d3 ?    /**
    $ F  u& q6 ?& {: n1 o     *  获取队尾元素) `; ]3 t9 O3 a5 @
         * @return 队尾元素9 z% ^, I6 I  {8 U( N
         */( w6 G$ }5 j, C& \! Z. y
        Object getRear();; [# Y+ R- p' D) H# q

    7 h! I' F- [! K% @7 Y6 F. i9 ~    /**' B$ n1 I$ B+ k  b8 }/ m/ i' l
         * 遍历队列的元素
    ( V# G5 o8 j, ]& b9 p: ?+ ]     */
    ) N! b8 ?' [( ^5 P9 ^* z8 C4 u) D    void traverse();
    ' L7 a3 }4 ^0 U9 m' Y- m# ]}
    & u* A/ ]6 ~/ R. g! {2、队列的接口实现
    3 s4 n3 D/ c5 @/ m+ }) d/**. {! e4 j) Q1 g! `* S7 ~4 z
    * 队列的接口实现
    8 C* Y  \# s' n- x% v) n *
    7 C, }3 n3 {; B6 K7 Q. ?2 j* ^5 O" g% u * @author zhuhuix
    ' F& A- J) k3 Y3 y3 R. ~* W * @date 2020-05-01
    4 u7 ^2 C0 l/ B */
    : A- d0 q( k$ [# o( z: }public class QueueImpl implements Queue {/ F/ k% ^1 S+ c6 m# m

    : o+ K, m% b4 P  G/ u/ ~, c    protected Object[] element;
    & Y# Q6 l( h5 d) I3 U9 i( u/ w" F* H) T6 G3 @8 X
        protected int elementCount;
    * f7 @% Z6 c' p' ^( h
    8 [& l8 \, q* g( z' E$ x    //队头
    9 v! D4 _$ k8 ^. V8 _% w1 o    private int front;) R/ ]7 [8 G, a0 T0 j; o
    ) Y, D  Y! I1 \9 z: V6 i# V3 A
        //队尾
    + S7 b, h8 M( v; X  o) G% T    private int rear;
    * Y% W& j3 x& S, H
    - G8 I- |9 O: Q: g    private int defaultSize = 16;' V: B4 L) E& l6 D

    % E# d0 q8 S  |    private int maxSize;
    + c4 t) ^; \5 g# `9 k% ~# |
    . I& T! O7 {  k! p, K" L) Q) I    QueueImpl() {
    ( }; i9 o, X& A" Q# e+ L3 M; o        element = new Object[defaultSize];2 D' m. A& q% o+ Q% E
            maxSize = defaultSize;- O% b, z% x; Y" I" r
            front = 0;
    " X1 B) c( R; y" \6 a        rear = -1;
    4 d& w8 U  Z3 L, u; J5 y    }# E' C" Z! ^% T- r0 C4 e
    3 B6 Z! y* i! b  Q
        QueueImpl(int size) {
    0 p3 ^# y" v/ {# B        element = new Object[size];+ j1 |/ x  F% b5 z# K' h' ^
            maxSize = size;
    ( R/ Q; G8 Z- u5 ~: t+ J& R        front = 0;
    3 @8 O, Q, ~/ h4 ?" Z3 T" _        rear = -1;! l, v8 ~- C& ]) J, k1 J7 }
        }) B- a, c: [. ]4 Q

    * V3 z* y; \! }9 z) b! M6 q9 z    @Override) B. X1 g8 g+ Y# D0 @& S
        public int getMaxSize() {
    $ i! c/ U# m; U  w9 J        return maxSize;
    % F7 h7 B$ `% D- s6 n7 t! r7 K' m    }6 j# G2 ~8 l5 M, m

    ) c2 t. O. V5 F2 M" E) O    @Override, A& P) ?5 l5 W- b, P% L
        public void push(Object object) {
    3 Z" ~5 ^$ k& v! |        //如果元素个数已经达到数组的最大个数,则进行扩容
    1 a7 o( |$ J+ N) k# q        if (elementCount == maxSize) {" e/ B; X0 Y! Q/ {! c& l1 Z& ^
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    * w: t# m: U  t6 s2 _( y0 V        }! ^+ ^7 F7 m+ P8 ~5 L4 s! n
            element[++rear] = object;
    4 v7 g& R" |* j* t0 _6 R        if (rear == element.length) {
    4 I0 J# ]1 ~( \4 V; ^            rear = -1;
    : [; ?# G4 e/ m; K        }, s6 w% Z9 j, k, @
            elementCount++;
    ! ^& k/ O1 h+ J. f8 w$ u) |    }
    2 }0 m/ ?% j( l  n3 Y+ ^9 l( q' Q4 b3 b; Y! w( k- Z
        @Override4 l# W# l) @. G( \1 {4 q
        public Object pull() {
    * j. B% V/ j7 H' j! u( f% c        if (elementCount == 0) {
    ! @: ?9 p7 k  F3 b! W# r% B" k            throw new ArrayIndexOutOfBoundsException("队列中无元素");5 K- b1 r! X: ]0 O, R
            }
    1 n% y) J# ]. K0 z        Object object = element[front];7 y7 s% n4 A, X! E2 u- i! _
            element[front] = null;
    1 K- V/ Y0 o5 B1 z        front++;
    $ c# g& ?$ s. ^, G        elementCount--;
      E( x+ S, O1 i8 e- y: b4 I        //队列清空,队头队尾恢复初始值) t5 j+ `& o* B  p' t/ z- r& a
            if (elementCount == 0) {
    ; V' W" Y! M" {6 a, p5 @% C+ t            front = 0;8 S, ?/ b) [: j! ~; n0 e8 M* W3 r
                rear = -1;
    6 ]) S  {* l$ m$ P1 i/ j% N        }: O4 _4 O7 u. f+ S/ f  l4 k7 |
            return object;
    % V+ r& k3 U4 U; N& e    }3 ?# W4 N% T0 m6 d
    2 p4 u( x5 n- f' {( d% G$ \8 e# o1 F, C
        @Override
    , n+ K! w3 w& k1 ~" f; P6 b    public int getElementCount() {
    7 |. V+ o9 P* d( D6 |        return elementCount;7 W: N, s/ s; N" r) J0 ]
        }8 }5 A6 h7 q  v2 U8 i8 m

    8 G3 l! q: S6 F, j. {: l    @Override
    4 p$ R1 [, p: f* ?& X    public Object getFront() {3 v$ z0 Q8 g1 y5 K) ^
            if (elementCount == 0) {$ Z) @7 R% X  e4 `5 Y! n9 J
                System.out.print("队头无元素");  ~( P( f  ?9 v* i* R
                return null;
    $ E, B, |- Z9 z6 o$ l5 t        }
    - C' u) H0 ^; u$ B& X        return element[front];4 E3 o9 Q& ~/ i- U- y1 c
        }
    6 r9 G+ r( x  O: T0 {$ @6 g8 ^
    6 S7 _) X: {5 k0 g    @Override
    # Z/ M, C5 }4 A. A* f    public Object getRear() {
    + A, L$ n/ P8 V, F7 ?6 e        if (elementCount == 0) {
    * v0 U% h5 i& ^8 i            System.out.print("队尾无元素");/ |$ k/ l1 R3 A/ n
                return null;
    4 P8 Y/ ], k' p, D3 {* p        }  S/ v; m5 {' l2 I1 L# k
            return element[rear];
    * x& T- Q3 S; {    }: o4 ?4 n7 T- d2 k
    - ~4 J5 |+ n5 z, r# U2 r  V% T
        @Override; w6 F* T) R- G$ b! R" m9 ^, h
        public void traverse() {7 {) y4 N" @. Z  o- R
            if (elementCount == 0) {1 h& w" @' w7 o1 y, m% X# W0 y
                return;
    9 \) f5 L5 L! A: L" t  R        }
    ! v( \! u9 J( M( ^& c( w6 v1 @        for (int i = front; i <= rear; i++) {
    4 x+ o5 q, _- `. u7 Z            System.out.print(element + ",");# M: e3 D! k( [* n3 Q
            }
    . e3 b2 U: Y4 W: x+ ?6 S        System.out.println();6 ]. S* ?8 e( b' n8 {
        }* W9 ~# a/ H) f( i' F) h, c4 J
    }) I& k/ j" D# o& S- L( \
    4 y- B% L, D0 l! J+ L  [! k: h
    3 ?  g+ r4 ]3 `6 L/ c# D( ]# t
    3、队列的测试
    6 q; \6 I0 @8 y$ w0 epublic class QueueTest {
    $ n, v# v; {& [    public static void main(String[] args) {0 e6 Z2 b6 ^  y  l# ~; `
            Queue queue = new QueueImpl();3 `* Y. r, o3 G; G* |
    " v$ v7 p* r7 t  x) b
            //获取队列大小
    ( M9 f" }6 I2 }5 ~$ N/ Y        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    0 \* c9 s9 a8 ]. R' d: A; r3 j4 U; b  G1 Y, @5 r  Y
            //第一次入队列:压入1-15
    ' E  |' g* p$ ?        for (int i = 0; i < 16; i++) {+ l! C; s9 F" d* n& \' \6 H1 H
                queue.push(i);. l% i$ u; p5 J% U+ \% H9 A5 L
            }! q+ |( ?2 O8 h; u
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    + n, E( t/ g. t; h0 ^% i+ u4 O3 [        queue.traverse();) i# Y* q# B4 r8 A" ~
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    " m: K, h2 x$ o3 a
    ( N9 a/ M9 P; n; p        //第一次出队:取出0-15& ]/ \+ p  a: j) R$ e
            for (int i = 0; i < 16; i++) {' F0 L$ I8 D7 \5 O8 r9 W! ~
                queue.pull();
    , }8 `! A" N; ~& y7 d. Q3 [; C        }" s* C6 v+ f- B0 m8 {/ G
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());3 m* e& ]" t) \
            queue.traverse();
    ; Y1 L$ M1 d. y        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    4 I: k) N: a" z
    ; P2 Q3 i! M- m3 |$ c
    7 J" w/ S  z, v4 R! `# b        //第二次入队列:压入16,31
    $ P. n5 M. W, |8 R$ F        for (int i = 16; i < 32; i++) {+ v5 e# ?6 L& d/ _. r' M5 H' K+ v
                queue.push(i);
    , E6 J3 `; q3 u4 `        }; l6 V: N2 g1 L2 g- r
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    $ X" v" ?6 i4 F: g, W        queue.traverse();
    - F. [/ H) A6 S+ A0 c! p" _/ F( z5 F( i3 ]6 J4 C# h, n0 V5 O

    ! p5 {& b8 e$ U) A% o+ X        //第二次出队:取出16-31' P$ u  Z: \% j% j" e/ P
            for (int i = 0; i < 16; i++) {& g1 ^& H9 v  S( S/ r0 y  Z
                queue.pull();8 }7 A2 X/ R" O! ?
            }' d8 m0 x, K2 f6 u+ k6 X& e
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    * S/ e5 g7 L* D3 @! ?+ E7 E. z. U        queue.traverse();/ `4 _: d, H. q) O# Q0 ^

    ! K, d# d/ G) a" n1 Q* s( p        //空队列出队报错
    - R0 U/ i) o2 ~8 a        queue.pull();
    9 w/ X* b6 Y. M3 E8 n& b4 E! ]- K5 ?' _9 x! e" a
        }
    7 o2 a0 n; D, B: I" \4 b}2 e$ |5 r1 i! |+ `5 v+ r
    ' H! w8 {3 ^5 W9 D0 }3 b3 v- k
    ( q3 ?  i0 x1 E! b6 |2 \. A
    ! K- J( P' ^  i8 p2 {- C  r5 V/ Y
    ! P" I) E4 G! s
    / K6 r% g) M1 _5 z! A

    0 J% l% [# J3 s0 x2 c; h% u7 F3 p2 b! d  B* O+ M
    * j  D0 b% e1 `" n

    ( g9 M. n+ m5 [" V4 R& Q- ~- ?6 i- K6 l
    * K: x' j- [" C$ P/ A  S

    ) y. w# V( Q/ E+ D6 o& l7 q
    0 ~$ i# p: ^. k' R/ C  y0 j1 N9 M$ i' J, U6 v

    : m( c( o! w$ K, t3 N' @————————————————3 Z! r& c& m' `8 T4 x+ A2 ~
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    . K$ L+ ~3 |9 N$ S, C% k; l0 ~原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    / ?6 o2 b& r% x1 V. J2 k; d9 v# A) C/ G2 @7 K9 Z
    2 \1 I, ]+ Z! L
    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:10 , Processed in 0.939455 second(s), 53 queries .

    回顶部