QQ登录

只需要一步,快速开始

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

    $ g3 l) `' n0 @+ @2 m/ T: @& s数据结构——栈(Stack)与队列(Queue)的手写实例
    4 B; c: B; p7 E- @' D0 y
    * Z3 ~* c3 z, U3 {: o: E[color=rgba(0, 0, 0, 0.74902)]文章目录

        p) F0 ]8 t% j& n8 j
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        # P+ P. o- U& b
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试7 |! z2 ]6 F* L" [' J) V
      • 三、 用数组实现队列
        ' a* z7 d2 \2 a( R6 H' D5 H
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试4 E! o# {& X" G
    " M. A4 s0 R" R
    / {) @' t2 O7 V8 G2 n$ B, C
    一、 栈与队列的定义4 l5 k$ w, C* ?- v- e
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    % W9 \4 b: A+ G+ ?* g6 L! g 1.png
      `% ^  |, w* V. F$ _ 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    2 k" i9 U1 S; a% E8 ?" o: ^ 2.png   _) E6 H1 [7 r7 A3 C
    5 L. t' O! {( j: U
    7 D8 ]1 C* J  e' c( H# O
    二、 用数组实现栈1、栈的接口定义
    . ^- O. o2 @, D: N# h, s" _/**% `, e% @) @& a- e- q1 W4 O
    * 定义栈的接口
    # u+ R3 a$ R; a7 ]' j *) w% u# m; ~6 W0 Y4 n
    * @Author zhuhuix2 l9 E8 [/ P+ r1 W/ a2 B( v
    * @date 2020-05-01# r* C: ~: f( Y. m2 _
    */
    5 Z. d5 E( }, I/ x2 G( O# }7 O5 [public interface Stack {1 J% `3 ?+ B# w( \2 H+ w  l6 N# ?& n5 W
        /**
    3 w9 D6 q) ^# H/ I" y     * 入栈
    3 N) |4 j% i+ o7 F! U& k+ i     * @param object 入栈元素  [" B7 X( s% V* P0 k. T& x
         */1 z5 q8 r; C0 {$ O$ v$ j9 O
        void push(Object object);
    7 {, E# e; t' [( H' ?4 s  H, W: r, {2 Q/ @7 e" C
        /**
    3 I& R5 i) ?  f     * 出栈
    / `0 }* Q' y: ]# M4 p4 k     * @return 出栈元素
    ; B' P8 c' o, E+ {! M     *// e* n( ]  v, S2 ^
        Object pop();/ d/ z( I5 W% v1 l4 E, h7 M8 P- J5 y

    7 S/ r+ B, o9 R/ V2 V; q. x9 I2 Y    /**
    / J3 y; B: R( q( d" D0 V! o     *  获取元素个数- a& C" W3 @. t, D, \
         * @return 元素个数0 v% d5 u' V9 ^8 q3 d
         */
    1 C" }5 P5 a5 _8 T; ]8 ]: V    int getElementCount();
    % e; i8 t+ M  |7 z1 w6 [+ P
    ( {( E0 G7 H. ^5 c) F  D    /**! m! k* v" B. e
         * 遍历栈的元素
    1 F" J& F  \) a3 R1 q" }     */' J( G- J1 e5 m( T& L
        void traverse();
    + w1 M8 E1 e8 a
    " A& {+ F' m4 g4 P, U}
    1 v# |* j4 n* ]2、栈的接口实现- Q( ~, m" O8 H4 J
    /**! ~( F+ P3 X0 k8 y  f, N
    * 栈的接口实现! r1 `' C0 o8 w# R8 h" g
    *
    5 c2 c9 P4 X: Q- t * @author zhuhuix3 e7 s: Y% ^! e) K% u; l
    * @date 2020-05-016 t+ y  ~* y8 P
    */) n. X2 Z; G" Q3 l6 m, Y4 Q' ~
    public class StackImpl implements Stack {2 D/ K0 e4 G5 k
           
    $ K$ J! G% z( D    protected Object[] element;
    ( M; L* k# j, [! D( e3 Q9 n/ I  P5 [! b# k* f1 n7 o/ D6 P
        protected int elementCount;
    , x5 Q7 d% X8 _: A; g2 j/ ^& b( a% A0 \+ F) P* [
        private int defaultSize = 16;: S) I" R2 y9 |& D" G: p# X4 S

    ; Q: |. ?% h! l    private int maxSize;
    2 a6 ?: Y. ^, H" ~- M. G1 X, H2 H" W5 B+ h- O$ @
        StackImpl() {7 b! K* j3 f0 C0 U! M: M
            element = new Object[defaultSize];+ X7 ~# K1 _7 O% E/ b) w+ h9 C! H8 z
            maxSize = defaultSize;9 a6 h/ Q& ^; F5 k; @
        }; U- @1 ^$ f- _* v$ l8 Z
    ( K& V$ f$ J* L9 b9 a& w
        StackImpl(int size) {& g, T  {( I& \! \
            element = new Object[size];
    ; i3 \5 l$ M; \. C' H- k6 x* x  N        maxSize = size;2 ~) e% A" G" p" q! z
        }$ B/ z6 N  V6 `4 J7 L
    ! y. Y% b2 J& P. h) H* @
        @Override6 V  z! l2 `' m6 Q6 W2 I* e
        public void push(Object object) {0 W" E% e7 I, j9 m  f: G
            //如果元素个数已经达到数组的最大个数,则进行扩容1 \' c5 I$ f0 R2 x: S4 V  j* Q
            if (elementCount == maxSize) {
    . i+ E! M" X& d6 o8 Z            element = Arrays.copyOf(element, elementCount + defaultSize);/ Z, U. C9 U$ I# u
            }
    * e5 x: y& A% n) g" K' o' m+ i        element[elementCount++] = object;
    ! t7 Q: V: o# c/ y/ D5 s+ C, K6 L, Y
    - A0 n. \7 v. Z    }7 J  o( ~/ A, C" ^* W5 ~1 C; p
            // 本代码未实现数组的自动缩小,具体方法可参考JDK. U. M. @8 m# S/ U- S
        @Override
    , O( Z/ r2 C" c  u' q" Y. G    public Object pop() {
    * T) S" G- F. k  v4 |7 @9 {        if (elementCount == 0) {% t. N7 @) N9 r& V( Z
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    ' Q5 l9 x8 i* S3 a! z        }
    4 u/ z( b- {; x1 v; I& X% Y3 P& C        Object object = element[--elementCount];5 _# X. W& s9 H, O. o2 D8 D' j; I
            element[elementCount] = null;
    $ h$ J' X$ W. z        return object;5 e$ _' f/ P4 v( R! h) o3 p
        }. ]/ ~9 v# O2 g( H# I; M- c- T
    ) b& t  Q- ]6 y1 J" @
        @Override
    % R4 K3 k! U- R9 d# S$ ~    public int getElementCount() {
    & t( B1 j9 I1 @        return elementCount;) H/ L; c/ i: j: t
        }% b# n1 A- r; `" _. y) y. V/ a

    ) m; ^" ~- `9 W2 m) }1 R+ J    @Override" l1 c" N" `1 A3 k. r8 h; N/ [
        public void traverse() {: ~  g! u/ {7 Z% p6 ~2 I
            for (int i = 0; i < elementCount; i++) {' f# {1 J; ~6 g) y& U; X
                System.out.print(element + ",");0 `- H* N5 C7 ~% b/ b
            }; }7 Y# s3 {: _) L5 j+ m7 v' u* q
            System.out.println();
    * f: A' H8 s. W- P- Z    }' n4 e6 o8 U2 m) Z9 `
    }  \9 D: @/ g, J  \
    3、栈的测试1 Q0 c/ l5 |# M) ^
    public class StackTest {
    * h+ ^! j# z) n5 n    public static void main(String[] args) {- S1 [: Z; G4 B7 b
            Stack stack = new StackImpl();  {) P9 S: n  e1 @; G# r5 }$ @

    " {4 p4 K  r( R9 g8 d& E        //第一次入栈:压入1-15
    : J4 F8 T% s2 B; b8 j3 p        for (int i = 0; i < 16; i++) {; m7 ~' a4 k# a
                stack.push(i);. X8 J3 x# z  |: q8 ?
            }+ m' x7 Y; E/ E6 u, G+ m
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());% F3 H6 C" ~# W6 o' O
            stack.traverse();
    . k, j0 }2 V) K% z! N- Y  n
    9 m6 ^  m7 Y' P% f4 C' |/ t1 _& U        //第二次入栈:压入16-316 h  v3 k2 r; F. D) X
            for (int i = 16; i < 32; i++) {0 R0 ^9 [4 y" s
                stack.push(i);
    9 N" g3 b$ _% E. R: v# `        }1 o) A3 O8 |3 f' _, D7 A
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    7 m/ e' O2 j. Q! \  c, d        stack.traverse();
      f6 Z9 F+ @/ [& @& Q. j( D+ K
    + w2 \% d  C- p! r        //第一次出栈:取出31-16
    6 [3 w3 Z! X, _        for (int i = 0; i < 16; i++) {
      S! D! h7 Y; J2 D7 Z7 B& M& _            stack.pop();1 ]) O' ~0 P' N4 D7 T7 o
            }
    ( W! I0 S' y- `- p6 D; M2 P        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ' y2 e: d' f2 @, K9 x2 L        stack.traverse();
    - b$ _* |7 H6 X  d& H  b0 F
    3 [3 K; f" \' B5 {        //第二次出栈:取出15-09 `0 B7 b$ e+ w3 E% e1 f
            for (int i = 0; i < 16; i++) {
    7 x9 ~) ]9 |$ ?) ~7 H$ [$ q% q            stack.pop();1 a7 Q. s3 Y/ i" G# L9 ^5 k& g8 o1 z
            }# @# J$ l- j! B+ ^- t% ?
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());9 ]/ @, k  B) {+ f5 n
            stack.traverse();
    / L# V% m$ d, {5 M3 I4 u9 c+ t
    5 @2 X' I( K3 l3 `( R& f        //栈中无元素,出栈报错
    ; n; E  D: j3 C% ]4 y& N        stack.pop();
    0 [4 U" s0 w. y4 c! D7 x6 f$ Z% U& n5 O" {$ }
        }
    / A- f% U# r, O}
    $ m/ t' O' n/ [: k8 E% l 3.png 1 D% v8 k* A' [' a$ K. b
    3 \( P2 i" }( z8 a% I4 A6 m/ t0 p

    3 @, H- w7 t  h
    - P$ [  p9 a, W6 b三、 用数组实现队列1、队列的接口定义% k, T! M% o' T  e) d+ q
    /**' _- _" M8 J# j
    * 定义队列的接口" w$ n7 T; }# Y5 a: C! \6 l4 C
    *% o5 C" s; N% H- O0 w5 L3 s1 f
    * @author zhuhuix: h$ ?! O. d' b1 x
    * @date 2020-05-01: ~/ f: o& |1 b$ _# U
    */; Y8 ^' Q/ @' k; P
    public interface Queue {
    . [, V( j9 M& d* m# q" W4 U) [7 z' g# s% }% Y9 @+ W# h: {
        /**& \9 `4 Y4 p8 o' g5 a% Y8 z. `& ?7 O
         * 获取队列大小
    9 x: F8 i/ C4 k" Y) _( Q     * @return 队列大小
      l/ w7 L7 X2 H6 J     */
    $ _; T. A1 N. B& b5 c1 U    int getMaxSize();( X% V& I1 i; R# A- o. \
    3 g* f8 @  e- ^) Y3 A$ ~, Y: @
        /**% b* Y1 n8 I& l9 D
         * 入队
    4 d! {' s/ [" @3 H     * @param object 入队元素3 Y8 h$ a' f8 c- e
         */" i) {) B6 L8 g, \+ b; l
        void push(Object object);
    , \" M8 }$ T# D" C& N5 Q( j" }6 c
      d9 v; g! m" v/ N    /**
    - Y3 L( x! n7 F: D# S3 V% H     * 出队
    0 F5 z9 U$ |$ E  _7 n' ~" C     * @return 出栈元素
    6 y  Y6 p! \0 U; ]: G$ N$ f; t     */
    - q7 P! |  {' G+ s& V( ]- n3 ]7 r7 p    Object pull();
    5 c0 q+ y, D% r
    . A% W+ V/ ]* t: I! G" r    /**
    4 A9 o1 E/ \+ [     *  获取元素个数
    ; M0 [$ D) W5 m3 @     * @return 元素个数
    ) N" L: \" k- L+ o3 t+ J     */. D; _/ x( d9 x, ^% Z3 s
        int getElementCount();
    ' t% H. y' d& H
    , e' ~7 \. B/ x- @/ ?" p# Z    /**( {. a# A; R5 p
         *  获取队头元素  g( v' |6 r% ?+ d. }5 y
         * @return 队头元素. a$ q$ D$ ^1 x2 I" w$ S
         */
    6 O/ Z& p" @4 R    Object getFront();
    / M6 V; x2 F; r3 D' W1 [, G- Z% t9 k6 j$ K+ V, n. D
        /**( ~# v1 D# P: o8 K& r& O' T0 }
         *  获取队尾元素
    2 e) y/ f4 r" w4 N     * @return 队尾元素7 y! W& V7 S% G1 U( x1 O" m9 E
         */4 s3 H5 I2 u! }' J3 x, Q, K; Z
        Object getRear();
    5 W7 O/ |# W/ W9 [. y  F/ `$ T6 w4 A" _+ t4 H. B6 _
        /**
    : {/ u4 \$ @9 J8 u     * 遍历队列的元素; F6 `! x" h+ ]2 V1 }  {
         */
    ) l$ O/ H4 b/ P1 U1 D1 }) t    void traverse();
    , M# q# L% Z+ E1 u/ }0 k}* t" R6 ?" M8 N8 t8 P
    2、队列的接口实现$ A/ {( ^# q# r' X
    /**2 O% v: O! q# {+ t. N' M3 |9 n
    * 队列的接口实现
    ! @5 E' J6 Y$ \6 A! ^8 I6 Q *
    * d7 ?, m" P2 k" k: w% R: R/ h * @author zhuhuix/ m, p; a' ~  w' _. C, N
    * @date 2020-05-01
    " I9 |9 `; e( c1 q */
    # j0 }" I8 W. L& t: jpublic class QueueImpl implements Queue {
    7 L1 E( i; G" y+ h) x0 N; Q5 p* n- z- G" \/ x2 ^. [& Q
        protected Object[] element;
    . r/ j4 x% k5 u. P8 B' t% @
    3 e% ~( H' H; e$ Z1 v  U    protected int elementCount;! V6 E# Y9 A" H: ^

    , j1 W$ ~& w6 I" [" G: _    //队头, Z( D3 E% s% g
        private int front;( R1 S! N: k3 L
    " M5 f0 L/ K; P* j! C% s2 ]
        //队尾* I: Z5 L6 ?; [5 ?+ {: Z
        private int rear;( h$ v& D( A6 O$ w2 _! X! ~
    " D7 C* T$ r6 d0 Z" D; z
        private int defaultSize = 16;
    ( f. O) x, G% D  u8 ~% r. `6 [
      }1 n1 l) A  H8 F3 R% T    private int maxSize;* i! @. B. k) a8 p$ B' F+ h& A( y; `

    ' |5 u+ s. b* X/ l4 j! H    QueueImpl() {+ U- e1 Y% L' G& M. a+ N) Q
            element = new Object[defaultSize];
    / o5 a0 k9 u/ M3 H. @% N5 e4 C        maxSize = defaultSize;
    + o7 t, j6 D( z        front = 0;
    ; w3 B4 B% y% A  U( Y+ j+ p        rear = -1;
    + Z4 I8 K4 [( w9 `' w    }
    . X$ H: f/ x2 W6 J5 `! ?9 m5 r7 s1 w) Y: ^
        QueueImpl(int size) {
    4 f' H! M$ z- i1 r        element = new Object[size];8 d2 D: D& V) ^, E( k
            maxSize = size;$ B  f" G" e& G/ U- d0 f8 e; ?
            front = 0;* g3 I5 E3 B+ L2 {; Q2 N% U
            rear = -1;2 i* g' Q$ [" o, t6 N- k
        }$ V% J& q1 Z* m. P2 Q

    ! V0 Y& M5 `  c$ x& |7 ?- P0 i8 L    @Override) q5 _! P. g, ], A/ D8 D
        public int getMaxSize() {# G1 K: e( D3 z! K5 D" q: J
            return maxSize;
    . P) F7 N# k: ?  [    }# x+ {1 G: V- J' n. A. K# H
    6 P& E; a. s8 d
        @Override6 i; a- |8 [' V( J0 v
        public void push(Object object) {" T+ |2 w* v" ?, J8 F+ x0 ]8 ?
            //如果元素个数已经达到数组的最大个数,则进行扩容- M1 k% D8 C0 r* }$ k9 i9 q- M
            if (elementCount == maxSize) {" M2 U6 e; \$ w( X$ f/ X
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");  S& Z+ Q# @( k" [3 @& q
            }% G: O9 M' h) b
            element[++rear] = object;
    3 ]6 M) [$ [" O$ w  P: p        if (rear == element.length) {
    ! ~* a& d. K! }' ?            rear = -1;
    " l. _- ~# Q$ z, p- H9 H        }/ h) z7 r' `# T; p5 I4 d
            elementCount++;
    + L$ E/ ~/ X, C% k$ f- ?& U    }
    " t; H$ a+ x( Y. R* a( h
      r  |3 q6 I; u8 X* [( q    @Override9 h( f- o9 ?" H
        public Object pull() {6 }- u5 H9 K; g9 R% K
            if (elementCount == 0) {
    ; b4 [! x3 G& k0 r7 ]: g            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    % ]" g& Y7 W% X9 [5 b9 \: K        }
    8 K9 y' F' M- S- w" y) `) S        Object object = element[front];
    0 c+ U( [8 p% D* j, v' T( c9 Y6 \        element[front] = null;
      _; ]  {/ Z# y' h3 g4 L* Z        front++;
    # W/ v3 n7 g3 K7 n' j2 P: N        elementCount--;
    + @7 G4 s, m  ~: p- b7 q% S        //队列清空,队头队尾恢复初始值% C: I$ \5 X$ t  T" d2 r3 L
            if (elementCount == 0) {
      s1 M* ?4 v3 K2 a            front = 0;# K, F- F( c. _: t  F$ X/ V; D) M
                rear = -1;/ _8 [' x  a4 Z3 I; A. O) i5 F
            }
    $ U$ }* D  c6 i3 z3 v% d9 p        return object;
    6 m% s. F$ F+ H0 ^2 Y& y) ]8 {    }/ }- S! ^! U% J+ q, }( U# @

    ; \; b0 z( Z  O3 g3 h* S    @Override/ K# E) G8 h* n2 W
        public int getElementCount() {2 Q1 d( P$ _! ]$ F, X8 f% I
            return elementCount;
    . x3 D$ o7 d: [0 K9 ?* {    }
    ' f1 E5 u1 Z. e; `$ k; m2 i, V% z3 `
        @Override( _1 v/ z& J) y' r8 E4 H
        public Object getFront() {% t) {5 j- m" Y- u0 a2 i- T- b
            if (elementCount == 0) {
    # a% z9 }3 R! Y7 G' c0 }# r            System.out.print("队头无元素");2 N% @$ T6 i) N" g6 H: `
                return null;' c' K0 w. a3 J; F
            }
      _; ~5 l9 B! k9 `  Q" {) a9 A' I$ G        return element[front];
    # V7 c/ S1 C  H2 f. @; e, C    }$ q1 f) P7 l! F2 p
    1 S* u7 n' D1 ^! t
        @Override! q8 j; k6 G/ @8 D: t# F
        public Object getRear() {' g0 v- ?- S% N2 F
            if (elementCount == 0) {
    5 Q- O1 f0 s$ |2 H; A9 i            System.out.print("队尾无元素");, n# K  R" Y; ?4 Y
                return null;! B9 M- m- h( b6 h0 Z+ F' u" c9 b8 N
            }
      d- U' G. k; ?9 \9 W        return element[rear];# G1 M! i; b# |# V
        }5 d8 l5 l8 L1 l8 k0 g
    - n  _8 K* A1 c9 B4 g9 g2 z
        @Override9 ]! D' X* O( B+ `* P) X
        public void traverse() {3 K1 M: n. S: I2 B  G1 A
            if (elementCount == 0) {' V5 ~. I9 n" p% d& }
                return;" U0 H) B6 T, k% D7 H3 i4 Q( B
            }
    0 T0 K5 S, V- J" D8 W+ x        for (int i = front; i <= rear; i++) {
    - V, @; S4 y  Y! ]$ e7 U            System.out.print(element + ",");5 E& b9 {9 p( u; h- Z
            }. r" i; _% ^7 I7 c- z* o! {
            System.out.println();
    7 w( Y) r" D) Y/ J- {    }
    $ b! c/ |% y- }7 {6 ~}
    1 l  \% v# {# c8 G: R
    ( z( E4 g2 |2 U1 I2 v9 J8 Q# n- `) \$ D$ [
    3、队列的测试
    & \9 i. ?! l9 x& X7 G4 Cpublic class QueueTest {
    2 b) i1 X- D7 c0 |8 O8 R2 q  W    public static void main(String[] args) {! `. F# \( u. b: s! s6 k
            Queue queue = new QueueImpl();. P* M1 ?, c  h. Y8 S
    , ?" z! e( a" y" I' H0 }7 k& A7 F
            //获取队列大小
    : G' @/ j" ~/ `) g/ a        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    $ T5 i. m4 @# u( ^5 G+ B2 u$ l1 i! i3 C& I" b' h( w3 W
            //第一次入队列:压入1-15
    ) h  y3 f. b9 _1 p# n        for (int i = 0; i < 16; i++) {* o. I* _5 e" p4 t/ \
                queue.push(i);! ]4 ?6 e  v/ B' }2 ?$ E% g: n- \
            }
    3 b2 l  G6 @2 }, ~9 o        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    + g/ e, f( n6 K) D2 z; `7 |        queue.traverse();
      O2 g4 v; k( @, D5 U+ D% b        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    6 P; ^: V$ }" v! f# a6 q5 r3 O. \% P: ?+ n2 K, P- [; F
            //第一次出队:取出0-15# S7 a: H' V3 A8 @$ Q
            for (int i = 0; i < 16; i++) {8 f+ V. b8 l7 D$ H! Q$ ?: F+ K
                queue.pull();3 c: X1 ?2 O" ?, U. {' W/ Y, a
            }
    8 @9 A$ n$ P8 g3 ?' a( ]* P        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    5 L: T8 e$ Z2 J% }. B' N        queue.traverse();9 l$ |9 N7 x% r1 a
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    & z* Y* u6 c! q! `7 T" D! C* U
    - ]5 Q- r+ K( G/ J/ T7 O7 z# R/ |: ~' s% b0 |- w
            //第二次入队列:压入16,31
    , j6 ?5 R4 N- G! R3 j        for (int i = 16; i < 32; i++) {
    + ]5 B+ i! I  }' c& i% ~; ]# F! K' Y( U            queue.push(i);$ I+ K6 z; l* g; i% I- G% x) z
            }8 c, g) h% n/ t8 H/ ~
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());! e- V9 Z  P2 p- a2 b
            queue.traverse();
    * _( J9 s/ n% ]9 p" f/ N$ W/ y/ c! e
    6 [! o2 I, {; |% P# ]" t* }
            //第二次出队:取出16-31
    . J+ k' Q9 u0 z) n* n8 `; r        for (int i = 0; i < 16; i++) {2 ^4 S8 w7 [2 n
                queue.pull();
    # v. l! ]. F$ \        }
    ' e" v. b7 h. a        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    : l6 {& v( L0 W3 ?+ p        queue.traverse();
    2 F4 u. L7 U1 a1 I9 Z) X' ?$ a" T9 F$ j5 E
            //空队列出队报错6 Y4 I/ ~; k, T! a9 R
            queue.pull();
    ) E1 ]7 F  Y) X
    5 T5 `' ^6 U3 B/ w( e& @% x( H    }
    0 v  E; o1 S: a3 C( o. L}% S, o' U# c' r8 w2 u$ g6 ^1 k

      C* K, n( m! x+ N# u/ Y; |2 x8 @* c3 l& |7 M9 Y& H9 v

    & G( ]4 Q/ E: E% V, r8 i2 }" `% {* |/ d1 p' i7 a
    & `. x: w, J" W9 g

    - @+ n. S- \& P1 J% A/ F# V  z4 u
    5 _2 ~0 F" N0 |' b1 S2 k; `4 h3 E
    # R% e6 ~3 Q8 P& }, ?& }, `! U; a

      V) R: R+ h. s0 u% F+ I. Y1 i" W0 s) c! `5 D8 m: y
    . w2 E( ?4 r1 |( x6 I

    , d! T! f$ B) K  f: o" U' S1 v+ @* S

    # @7 @- ^- n' G+ @4 W. M( Z————————————————
    2 F0 v3 Q5 ?/ ~版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ! p7 v' Q8 i: B  `原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785+ a- ^. ]7 S% T3 }
    2 b! k1 Z5 h* F1 i9 ?* h

    3 h$ I* F; t  [% 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-8-4 11:54 , Processed in 0.430585 second(s), 54 queries .

    回顶部