QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1677|回复: 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
    ! H. q* ?: m8 s6 x
    数据结构——栈(Stack)与队列(Queue)的手写实例2 n- U1 x( B' _) ^
    ( M# v8 @8 E. U# d: a( ?4 a
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      " U( m/ h/ p4 t' L* Q/ j" @
      • 一、 栈与队列的定义
      • 二、 用数组实现栈# x0 r- }6 s  N! x0 `
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          / K( S9 I$ D7 p9 y+ D
      • 三、 用数组实现队列
        , a9 F7 |( M; ?8 L. R  W0 @
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          $ [' r( s3 M5 B2 u4 r6 n

    3 @3 G( q! {) s7 h8 c, M
    1 J( d( W+ @! D  V! D一、 栈与队列的定义
    $ F! Q3 Y; g* J" ]" D, E% _, L( a栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。0 I" }5 A6 `3 H# G0 _
    1.png 7 m1 T4 \% I0 L7 Q% X% N
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    ' G" W! b* @4 i, O  f: ~ 2.png 7 x8 h* P% x; J  J7 L# R! U; m

    ; S! `2 W( G, s  H' ~5 [* k
    & z4 u8 C8 W  U! ~8 E5 c2 _' v2 T二、 用数组实现栈1、栈的接口定义1 {9 S; P. a8 W: a( I
    /**
    9 M6 q) h8 C$ s) l! i3 ~1 m * 定义栈的接口+ |4 u1 J$ X  f- ~$ ^
    *' ?. _% O( ^. L1 I
    * @Author zhuhuix" C8 ?. N. M/ Y* e8 |6 W7 {; p0 Q
    * @date 2020-05-01
    * f% h' T. _. z. `$ Q  ?0 C' v4 ~ */5 o3 j) u1 f! N' E' o9 d. j
    public interface Stack {
    4 g3 P! ^* }% u8 t; o9 v6 X3 w8 s: N; P    /**( {* E3 f' B5 X
         * 入栈' F9 U  m" z  V- d4 A: T
         * @param object 入栈元素
    ' I4 S" l( o4 ]8 [- O/ J- h     */1 [: |1 j1 u% I" E$ z: q+ V, u
        void push(Object object);# ^( ^' y# d5 I  s

    & ^6 c8 F/ R2 Q    /**
    % j) _2 B- v! N: q! e. o, e$ O     * 出栈/ r1 m: ^+ B/ q& ?0 B* |0 [1 e8 n0 m3 f* ]
         * @return 出栈元素
    + p: |" x5 J% h6 G6 b7 d4 |     */# b7 ?8 I- q. a
        Object pop();6 c: z) S1 Y' l. L

    ' ?6 L' r2 ^$ r" s    /**$ u" |1 @% p$ @5 _' ^' K
         *  获取元素个数
    7 a1 x. M: _3 Z$ `/ p# Z: t, T     * @return 元素个数
    ! d) d& m+ V% I6 X  [6 b     */, ^$ r9 o0 T0 [
        int getElementCount();6 G' C5 X& y0 f# ?
    % }, B0 o1 h# ^3 @, j9 N
        /**
    - d2 A/ ]8 l7 w8 K8 ~4 ^# N     * 遍历栈的元素
    6 d" M4 F. T: R; G' K: a0 a     */; p/ Z, s2 v5 A- B' o7 G" L
        void traverse();
    , ?, ?9 B5 ]% [' U- b0 c- g: [! j2 {% j4 p
    }
    / i1 D2 w; ~3 o1 R' K7 q' W2、栈的接口实现# j1 Y4 ]  P) S( O% y2 F
    /**
    ) F; m& ~* o) S( U9 [ * 栈的接口实现. `3 N- F. Q, o  t9 w
    *
    # {0 X  K7 _# ~# Z' m/ H. T* i% [: F4 n * @author zhuhuix5 Q9 Q( D1 M) q3 {
    * @date 2020-05-01: E5 ~9 @1 Q% m7 b+ C/ y
    */% E6 P8 M  a+ D! \& F
    public class StackImpl implements Stack {; s8 ~4 h4 i) l/ I( z  _5 c
           
    ! U  `' B* {0 T5 B4 V    protected Object[] element;' }2 T, ^! L* t/ J1 V
    $ C& m. @, Q. |9 l
        protected int elementCount;& {2 X, [( ~! Y+ K/ u

    3 C1 K, C  [) n: {0 ]0 o0 r# |, }    private int defaultSize = 16;
    3 H6 M4 L! E6 j/ q  {6 D9 _1 u7 Y; v, k' U3 Y8 o
        private int maxSize;& f/ }' t8 q0 o# [9 p
    1 I9 ^, K0 r5 x7 G
        StackImpl() {
    : g* p2 N2 f5 T! U0 x9 I        element = new Object[defaultSize];
    & v0 d4 \9 K- ^9 H( M        maxSize = defaultSize;2 @( l# C3 [# w$ E$ g
        }$ b, }, B) D/ t6 p& P& S# z

    % X7 e: n$ [# k' m# B  e    StackImpl(int size) {
    ! w2 _4 h" H/ v0 \        element = new Object[size];
    " N# m$ K0 ^, X0 G$ B' {        maxSize = size;
    ( E- {7 h" r8 C% i  b1 P    }6 q# b3 B) r  A- Z
    9 R+ b# M1 V5 U6 z3 v/ E
        @Override
    # o+ |$ w6 A2 D/ o7 i! ~) I6 G) q    public void push(Object object) {4 ~6 ^; X# \5 {+ d/ n: F# D7 O* v
            //如果元素个数已经达到数组的最大个数,则进行扩容" J" s" R$ w* s, p& d" l4 S* T
            if (elementCount == maxSize) {# B* f6 Y9 v) E! \; i! f* x6 v- U
                element = Arrays.copyOf(element, elementCount + defaultSize);5 g- }; H1 }' a
            }
    6 L  h2 V/ T8 \& f8 M" a2 `7 E        element[elementCount++] = object;# t. o# f6 K3 J, R! P# i: `' r' }6 q
    " Q. a1 n4 d  P' X0 e
        }
    . ]& x0 x' `6 v* o7 [2 Q        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    # ^. p; u5 [% b$ v! O    @Override
    , ~2 t5 J. u1 C5 z    public Object pop() {1 {( m6 j6 B* ]6 B. N. s* y1 x; G
            if (elementCount == 0) {8 R+ u( P( g( L4 T. M( |
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    9 c; N; ?4 o. Y  B7 x/ d        }
    ' E" V0 z; X8 d+ }  {5 v, t        Object object = element[--elementCount];
    : }; r; Z' i5 q$ ~! ?% m' w2 p" i, p        element[elementCount] = null;
    0 d3 }6 f6 I, G2 q8 |! k( Z        return object;
    8 H! L* ^4 l% }/ l    }: ~7 |+ s# h% C7 P8 G4 C3 v

    # W& W' u6 X2 v; g3 k, R- `: G7 T    @Override) ]9 Y8 V: s8 l
        public int getElementCount() {
    - U& b7 I/ Y+ t# |/ F9 b  q        return elementCount;* H+ N, l. P/ q- ?& ?; c
        }* V. T5 c) b9 c5 J! M6 {

    ' ~& N( v) V+ T, f: R    @Override5 U2 D- \# o6 ~
        public void traverse() {% S0 [7 ?" d* S6 k- |5 ]1 w1 g
            for (int i = 0; i < elementCount; i++) {% d# x7 v, K, v  M
                System.out.print(element + ",");
    0 Y6 J6 y. a! s# r7 W2 q        }' W2 I# {1 N! Z! p1 |. Y  h
            System.out.println();
    " O  [" x0 h9 x/ |# v    }
    # k" a- }1 Y& p# T* s}: U% P; n; O4 p  j1 @& B9 A0 d
    3、栈的测试
    5 w" L6 Y. w. k/ s9 @public class StackTest {% S6 D, Y5 j  Q% u8 t8 \0 ?; A
        public static void main(String[] args) {
    0 `3 }& C. X; f" I* X% T: P0 e        Stack stack = new StackImpl();4 N% V* X0 \' b+ z. |
    . l# G' q9 e9 b! _
            //第一次入栈:压入1-15
    2 a/ `! E  G7 X" y3 i        for (int i = 0; i < 16; i++) {7 _! `' ?4 S3 K* D/ D& t' E
                stack.push(i);% Q# `8 R. g( X4 a6 \& K0 P* z' a
            }+ W9 Z/ \* x+ o  o) P: Z6 w3 O
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    . o" d3 W  D1 k7 t* T5 T' `        stack.traverse();
    / m1 j) }  A) R8 u+ n8 A$ o/ l$ A
    4 e# J0 T4 _( V+ p# Y8 |        //第二次入栈:压入16-31
    % r& c! [6 Y4 D8 y: ?        for (int i = 16; i < 32; i++) {
    + c6 _3 ^$ r3 H6 a            stack.push(i);% p! Z7 v: r  V# A# p! v! H3 y7 E
            }$ ^/ ]5 e$ k# L7 \$ [
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    % K) @2 w4 c4 C* G        stack.traverse();% Q0 A# q8 |& O* c9 e2 }& L- C: p& Z

    7 Y4 a; d1 Y% B. H( W6 g8 R        //第一次出栈:取出31-16
    $ F" K) r1 p( i! K        for (int i = 0; i < 16; i++) {2 G2 f$ C4 ]& L4 o6 K  a* F9 v  C
                stack.pop();
    ; I- m/ u# Y4 [$ \# K' ?/ u        }
    " }  j+ n( z& D* }8 ^5 }! e        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());! Y1 ~& k7 }, A7 b4 n! O1 G$ g
            stack.traverse();
    # Z: n' P9 O& {6 t) S! k7 t, A$ F" ]; u( U
            //第二次出栈:取出15-00 }) }* P3 u4 t/ o9 Z
            for (int i = 0; i < 16; i++) {+ ?# q$ _* f! U! H/ z  d! R& X
                stack.pop();: N  T' t1 P2 k- [/ J5 u! c
            }
    4 C- s7 @5 R# a9 b        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());% ^2 S+ I; V! X. k8 j# _
            stack.traverse();
    5 {5 Y) _# x+ @  _* E$ B4 |
    ' a" ?2 Y9 Y+ J7 d' k- C        //栈中无元素,出栈报错
    4 p; k0 M+ i  j& }4 j( Y' f/ o0 u        stack.pop();/ V4 k# b0 \1 x# `3 _! e* g
    1 {$ c% R! @5 s) R& I* X9 L
        }
    4 d& m7 g) {0 q. y! ?2 {}4 }3 F8 |2 g. `. p* r; s! {
    3.png
    3 u( n% R& J2 y! L* }
    * U2 R0 a6 A) D4 W, o$ r( B; C% N! I- `! q
    2 `0 o* g" z. _; m4 W
    三、 用数组实现队列1、队列的接口定义
    / W+ k9 q; R' {! t0 V/**
    : G  x1 p- N& G: `; G1 I * 定义队列的接口1 o1 h5 B* R. Y% o
    *
    ; y* C. m8 W/ P& b * @author zhuhuix& [9 R# o/ N. ^4 |
    * @date 2020-05-01
    6 _7 L6 k; q1 K9 z( E */
    8 N6 A* l0 I5 c/ V+ Z  e' C8 Spublic interface Queue {# z( x! f- D5 E. \; g) Q! a
    $ i' d0 a- B0 s% y7 N
        /**
    7 K4 Q8 b; `7 Y& c1 o* d     * 获取队列大小
    # ?( c# g/ M" G     * @return 队列大小
    : ^' C" f+ ?# G! G     */, X5 C" m6 z8 x4 H+ o$ O
        int getMaxSize();
    ; E4 B5 h4 |# F+ r6 A
    ) `4 ~5 [$ j$ a# h! {4 B    /**- L- Y# z- V8 C1 W( J; h& X
         * 入队
    ( q) b7 `6 V6 \( a5 @     * @param object 入队元素
    4 _+ l) w. H$ G( z8 |' V% }4 z- e7 R8 q     */; l# c8 d+ w5 d! U2 p: |' ?
        void push(Object object);" K2 W" ]: H: Q3 \6 D. l$ o
    # L! I, R7 u, c& `' v6 d
        /**" l4 s* x: t: [5 ?
         * 出队
    : ]) m. S- W4 w, d0 U6 T6 ]     * @return 出栈元素
    , I8 F5 R7 M. `# w4 \1 V- G     */) P( U' `& T6 X" P
        Object pull();
    * O/ C$ F' T4 |3 b$ P: j4 P$ G
    , d+ S  H1 G- Y+ O% L% |; g    /**
    : i6 k& H/ j: [: a  f! `- L0 L     *  获取元素个数
    0 [) o& u, d4 b" m     * @return 元素个数
    % T/ x5 J# P0 U' p9 z( {% _4 J  s     */% [! j& W$ W  G1 z* c7 x- w/ L" Q
        int getElementCount();( ?9 A8 F# |. d/ h/ r# ^- H

    8 }8 J! Z; S" `% M# M4 J    /**4 w3 Y$ W. A! t# R& n
         *  获取队头元素  o2 w9 I" p+ M
         * @return 队头元素
    0 w$ f  q/ R. O     */
    9 _- D7 z/ c+ F. Q0 I" z3 K    Object getFront();
    / ?4 H1 D) @) F7 s$ p
    7 F/ ^: l& T4 o% V$ K$ S7 g- z    /**& r8 f' Z: Y9 [& O# P6 V
         *  获取队尾元素
    2 w. U5 Z8 E6 R& b" _     * @return 队尾元素$ J$ j" t# P5 J2 a* H; H
         */2 l; ~% a& t2 V; p2 Z* p4 Y
        Object getRear();
    & q! G4 e8 r5 ]' m/ [3 O8 v8 C; F- J9 @4 O9 \/ e
        /**! g  W6 e: Y. }5 j( S. c. o
         * 遍历队列的元素
    1 U# E* u  t7 ]0 [% g3 @     */9 L0 o( d8 H2 d3 g
        void traverse();! @! y3 X. c) Z
    }
      L% f9 J  I6 k1 m" H0 E. |0 k5 ~2、队列的接口实现
    0 u4 Y# V( N' h. J8 o/**
    6 m6 {% h3 E$ ~9 C: V2 m * 队列的接口实现
    " K. [  g! p4 x! O6 | *
    ) K: ~/ n& d& ?% D. }9 g * @author zhuhuix% g3 s! I) a/ o- ]) I
    * @date 2020-05-01
    % N. l2 m3 _" }$ e% m */; H5 F, c3 V% Y+ z' G
    public class QueueImpl implements Queue {
    5 K  w7 i7 M1 A
    ) p0 R0 p" M# W, X2 M1 N. o$ i    protected Object[] element;/ ]' r1 W4 o/ r
    : e* w  l" T- ]# _! h. ?3 u
        protected int elementCount;( g! v& ]$ p$ n% m

    8 d  n: N2 F2 n+ e" q    //队头+ o* p! o# t2 L, p
        private int front;
    9 X. B$ ~# ~" C' n0 }
    ) P" c1 W# c4 ]" D    //队尾$ o$ c% ]+ l- f- W- T  y
        private int rear;
    ' ]+ E$ A) k; W; _' ?: Q, t. A0 a7 O6 ?; `
        private int defaultSize = 16;
    5 @, o2 A" L: U3 k2 `: t: a% U  q
    + D5 U) [! X" k6 N0 ?! q    private int maxSize;
    & {( s% A: T+ I9 L/ [% P
    ( @0 S! @% W1 N& d( S- c/ ~5 C6 j    QueueImpl() {( d2 Z5 |% O: s  t
            element = new Object[defaultSize];
    - j/ f, ?+ m( C8 O7 p0 f        maxSize = defaultSize;
    - |; @# m9 b9 O4 H9 y! W% k9 \        front = 0;
    6 d" R9 T2 m- a  r' _0 o        rear = -1;( |' p$ _5 }9 S' _: U2 e
        }2 N! v* U& ~& h9 u, ]+ U
    ' r' \* Y  ?# m1 N& L& w- s5 M
        QueueImpl(int size) {, c! S* }. T: C. k# P0 G
            element = new Object[size];# G+ O: c$ ]/ ~8 K
            maxSize = size;& ^: D8 @: e8 |# d. d7 S
            front = 0;- u& k4 y1 v5 b5 U
            rear = -1;
    $ }- s: x4 ^- y0 i) B    }
    5 p, T' |% Y7 z: Z
    5 c5 _" d6 P: n+ b9 S7 t; j: Z) Q! b    @Override3 E! P4 G8 Y% s" d
        public int getMaxSize() {
    4 m6 Y' H! V9 v        return maxSize;, n2 z8 }% J' R6 d9 \( `" g8 K* _
        }: r- t2 w. Y% ~% D5 M1 j8 B0 \; B
    7 G+ \+ n1 z, }) ?5 ~) [& I
        @Override
    7 a: W# G9 y- \: B7 }+ T- B) z7 x    public void push(Object object) {
    . J6 O2 g# M5 L( L0 h! q3 N        //如果元素个数已经达到数组的最大个数,则进行扩容$ s0 M0 v' U9 t+ |( Z8 k" x4 Z
            if (elementCount == maxSize) {2 y6 S$ W- S) r
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");$ b3 }* c. h2 i( E) I4 n
            }0 u8 x: `) W( r  ~+ ~9 Z
            element[++rear] = object;
    9 y# Y6 K  L. v% E- \# e        if (rear == element.length) {1 e3 q1 T0 a0 K. v. v# y3 v
                rear = -1;0 [  T( S  G9 }- K9 ?' T- M) g0 |9 w
            }2 G4 C2 O5 _3 r) H/ p, p8 k
            elementCount++;3 K( X4 ^9 U' Q7 v6 H" ]
        }
    0 i' c+ b  {3 j8 ?( H: J
    5 h$ g2 M$ m: c( A7 q% |8 a    @Override9 F: ~5 l  A8 E" p7 k$ [9 K1 \
        public Object pull() {
    % w9 l# f4 B4 Q        if (elementCount == 0) {  F) q8 {( T: s; ?
                throw new ArrayIndexOutOfBoundsException("队列中无元素");; j1 @! Y" C- h# D) M1 ]9 [
            }! Y8 C  z, m( i% E
            Object object = element[front];
    # K& X( J3 o& o, X0 \        element[front] = null;8 ]7 n- @: u" W6 E% E* Q
            front++;& x0 r3 j: z% ^1 A/ H
            elementCount--;5 N( X; u. X% p# i; i
            //队列清空,队头队尾恢复初始值
    7 E7 I! x+ U# U7 q1 W+ w  V: Z  v        if (elementCount == 0) {" c" q+ f; T1 t# V
                front = 0;! E- D) |6 B: {  ?; l, e
                rear = -1;
    4 s3 h8 S3 A! O% M4 T9 i7 X4 m        }% w2 `( \# x: w
            return object;
    4 u& q8 R6 l* s    }
    . O% n9 y' \+ Q# j- [9 A( B8 z& |6 [0 o& `
        @Override
    4 l! g& e% S. v  f5 y  E    public int getElementCount() {, o. {, W9 _; R2 k$ Y4 B, M
            return elementCount;" n3 |( g8 I' v$ s1 y4 `9 V4 H
        }
    1 C) |+ g  b, f0 K6 a: q& S
      |; j( [' G* V6 h    @Override* [# C6 q: P: k9 H
        public Object getFront() {5 v; ~' j9 a1 H) g, o$ P2 n
            if (elementCount == 0) {: P- D; F8 g7 P
                System.out.print("队头无元素");" w* M* R- L  ^& z( H+ O
                return null;
    3 F) X. ^; ]3 W& J        }4 x* v' O6 P+ S2 s2 }% @& M: _
            return element[front];
      F* R) k0 }0 [$ ~( U; ]    }
    % l9 U' t" R; P/ j6 r# h0 ?, P" `! `. O  m
        @Override
    % }- l% W" ]' d# q( W    public Object getRear() {8 D) A; Q4 S- y
            if (elementCount == 0) {- ^% |7 V! Q+ ^6 d7 |( R& T- i8 R7 n
                System.out.print("队尾无元素");+ B: b$ E/ t& _/ l/ g
                return null;2 F6 I+ Y* L" `' @- K. B4 b& k' v+ M
            }
    / n7 F; J0 F( t* W5 S& e" P$ M3 c        return element[rear];
    8 c$ R/ b8 `* p) [7 t5 }7 E9 W2 W" H    }+ y5 X3 H" v* q1 `& `* n$ O

    ) W5 [. y1 e9 ]+ T. J, K$ K1 l    @Override" }. x0 C$ O6 {& b4 O" [" W8 h
        public void traverse() {7 B5 I8 P+ e6 M; {) L$ ?0 g  z5 o
            if (elementCount == 0) {
    ; B& m* v. ]7 e) Y9 ]( a3 \            return;5 z) ?2 o. g& G, o
            }! n, J0 z1 U( }1 a! A
            for (int i = front; i <= rear; i++) {
    2 D9 W" ^3 y8 m: N0 ?' R            System.out.print(element + ",");+ j6 C* S& r8 q$ a
            }
    ; i/ \9 f5 a; t; R: `        System.out.println();
    9 P) S1 }: ]; w: V    }, C  |. k- f9 Z- p
    }, U( `9 O9 _: p- e% [6 l; x

    & R( x8 K/ h1 ^# M8 Y, a
    1 X! l8 T+ [+ b2 N; m3、队列的测试
    " `( n  y$ ^2 L( [public class QueueTest {
    6 m% O. n& w% b9 @    public static void main(String[] args) {* D2 A2 ]2 B0 ?6 i
            Queue queue = new QueueImpl();
    ! I0 r" {! [8 H
    ) o, O# Y, J. [6 x5 G/ {        //获取队列大小
    : V$ X, [1 ?" h5 ^* d        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    2 r2 _! |+ L6 x) {" f' U$ z
    " O5 T2 ]& L  e- _1 p        //第一次入队列:压入1-15
    % l+ Z' ~( R3 p' x+ S  B, |3 u1 Z        for (int i = 0; i < 16; i++) {
    / @4 B" b* R* ~            queue.push(i);
    * N1 G& z1 ~. i/ h6 M) W        }
    6 I9 l/ ^. ~$ h7 U. ~        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());. @# v" w" t4 A" ^1 {1 w6 l+ q
            queue.traverse();+ i$ c& L. _! Z
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ( |3 C* a5 l6 u( I+ f/ y, F; W3 o" {8 ?1 X
            //第一次出队:取出0-15% c& L( W# }- t$ o8 s3 W1 y  i
            for (int i = 0; i < 16; i++) {
    ; r5 J' D; J  l            queue.pull();: J+ j3 R3 A* n! M4 l- e) _
            }
    2 H0 Y4 ?: o/ K- H        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    3 S1 h+ a* i( k1 i* J% S        queue.traverse();$ t* ?& m+ E8 k: q
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ) @3 q  |3 n2 Z1 T1 y* ]: w- B# s* C) I

    $ b  P9 ]% M2 F2 V. y+ z$ s0 X0 `        //第二次入队列:压入16,31
    & D3 S* U3 Q' v* i. i- T7 H# t        for (int i = 16; i < 32; i++) {
    # @) c1 c4 V8 ?; c2 n, {4 a' h3 e            queue.push(i);" w& T  c$ I( E. x6 e3 ^% N: S! m  M
            }& t& x' u, M3 P
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    * O9 n7 b7 t; j8 t        queue.traverse();7 l9 b# M- z- g! D+ f
    8 Z2 M. G2 ~; M' o7 w; I
    ) `( u7 E) D( i4 b! a& s! C7 @5 u
            //第二次出队:取出16-31! I& ~$ X! n. |; o* g3 Q
            for (int i = 0; i < 16; i++) {7 R) P' R& f( X/ h9 R% V
                queue.pull();
    % R6 q( |8 }$ ?5 p& d1 ]        }  W; ]" N% D% {- l7 w% Y% a1 a
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    / N: u6 P# E; L" Q9 E        queue.traverse();3 ]$ [! q9 t" G

    . s! Y5 C' m4 q+ V) F        //空队列出队报错" h* n8 _; W  x8 I" k7 e6 L
            queue.pull();) b7 n5 {& O8 y  ~0 L! z
    + U5 }& y3 x# Z8 W& J! J
        }
    * t3 O1 {; ^. w4 [9 T}
    0 M1 S) s8 j' b2 Y
    $ ?! U! i: Q' ]; @9 g
    0 v: Q, K% L& |) Y2 }: e7 p
    1 \( g3 g0 n; X: v* S
    ! {! N% g$ I( q) R, a% Y. t0 V" z) c! C+ e( X3 m8 N" B

    0 |/ E8 E4 |0 o) Y! K
    4 q0 Y  Y; c) L, H9 X9 B) s5 ]: o) `; U

    # d5 ?+ }" W) e' }8 z! B9 T  K* s$ O& J  ^3 c% O* Y

    3 V2 C8 h/ ?" R8 P) l3 @$ h' _
    . [  e: S& x9 V# E1 W3 g4 w8 U( e! L; {' \- r

    , w  S* ?5 S4 [8 O, C) j& w- C( a: L/ K
    ————————————————
    3 F. V4 a3 I, h  O9 g1 J+ @版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      m0 N5 E; X8 u: @* x$ A/ P  P原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785/ E5 V- i( c/ u" F( ?
    , b9 U2 {: _2 P

    6 \% y+ p* r0 V* B* G9 T! Y
    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-4-20 19:11 , Processed in 0.496690 second(s), 54 queries .

    回顶部