QQ登录

只需要一步,快速开始

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

    ! |1 Z3 h' Q. f5 @% j数据结构——栈(Stack)与队列(Queue)的手写实例& D, B: \0 ]8 v) t7 H

    8 S  i3 |8 L) O/ m7 o4 Y[color=rgba(0, 0, 0, 0.74902)]文章目录

      8 |- W' t3 ?1 s, b' D% M
      • 一、 栈与队列的定义
      • 二、 用数组实现栈$ @  _2 O! O+ h3 ]9 B, H
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试) O; {( _) T' B- |  I. W6 P9 o
      • 三、 用数组实现队列
        3 ^; O5 v+ H/ R% c( e6 D) B2 g' H( L
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试7 C2 M) P7 K* E% H  _5 y

    5 B0 _+ C' A( h$ s4 e1 \1 B9 L, S, o9 i
    一、 栈与队列的定义
    4 c8 b, d; A- v. U5 }* z5 E栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。. V0 T: b$ w; [/ ?
    1.png
    ; Y7 j; S8 g2 l5 u( m7 Y' ^ 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    7 n4 A0 H) ]- z2 |" A 2.png 0 }1 T- x2 H4 n; M

    ( [  c; r1 v3 B/ q' K: M( M/ Q5 c+ b
    二、 用数组实现栈1、栈的接口定义
      v/ N! }  ~5 o' `4 I3 v1 _: M4 Y8 Y/**& W6 d. q3 O3 p# y1 T7 m
    * 定义栈的接口( R2 }( K2 Q& o
    *9 a! n& ?- R: ~5 g0 M* O# U& A# G/ W
    * @Author zhuhuix
    ! m* Y; G$ o  X+ {$ @, C+ |& c * @date 2020-05-01% }- }" Q/ {3 D# p1 L/ K
    */
    8 Q+ E, K' L" kpublic interface Stack {
    ! P3 o0 Y+ M1 |0 y/ e/ C5 {    /**1 K5 H9 n; E. p8 Y, m. }! d
         * 入栈
    , F* r, ~6 }' d1 l* d     * @param object 入栈元素, ]; d- a0 a2 D  S! e' X( A, o0 }
         */9 {' h3 Z& U, B8 C/ l( W
        void push(Object object);
    7 b* }0 Y) D6 t  V) P2 W# d: ~6 k: g2 i* y
        /**3 ^5 W5 i7 l, B1 s/ ?" J+ V0 N
         * 出栈+ q3 q7 h) T  `
         * @return 出栈元素
    2 p* i* R/ h5 a1 N     */8 L) V# P" Y/ n# D1 Q1 U) X
        Object pop();
      X# M8 B1 B6 ?% k. ?) m2 J3 q, M' s/ N: A
        /**
    . ^& [1 |7 ~" [+ N; L9 V     *  获取元素个数+ C- k& F% W3 @, P5 ]& u, ]' o" ?
         * @return 元素个数
    , ~$ R) u' v/ n2 E- T2 b  N; e4 Y4 P     */. G( E- ?4 Y5 ^& l0 X& o
        int getElementCount();
    . B( C$ M4 x+ q& k( g
    9 i' V1 U3 Y4 D' }# U    /**
    " u. J4 M5 x( s8 B3 ~+ s5 l     * 遍历栈的元素
    ; t+ _/ W( p6 Y% I& j- ]     */
    8 X* `, m, A5 s) X8 G( l8 x, A7 B    void traverse();
      i& h% e" P) a7 j: G/ h6 ]2 K& {5 @! `3 G8 Y4 D! y. h# x1 c
    }
    ' T$ w( h0 {9 O& x. L9 Q5 z! R2、栈的接口实现
    2 H1 s) V3 t5 Q9 {6 W' V/ Q/**/ D: C1 o" j6 a7 ]6 M1 {
    * 栈的接口实现
    . z4 {" A* Q- m" ?5 ` *4 V2 X( N3 r7 K3 d; ^) A( A% e! l
    * @author zhuhuix: C. H# t( {" J; B! A8 _
    * @date 2020-05-017 D* a5 f$ ~, r8 ~4 o
    *// W3 o1 p3 H, Z: w1 V1 F8 x% T
    public class StackImpl implements Stack {
    5 ?2 x! A8 Q# z. j4 R# O        ; s! d# c7 Y# S. w: S
        protected Object[] element;
    ( O) H- ~" x9 P' W( B
    4 }) l& D& U- E, Z/ A    protected int elementCount;3 ]( R+ T+ C- @4 r

    6 b5 V, _- h- e9 t0 r& v    private int defaultSize = 16;
    * e# x+ y9 E. S% s
    & M7 @, B! G; B! \1 E: m1 t; @    private int maxSize;: @+ S1 E0 L$ S( q5 W  q

    " z7 H  u  q8 \( A  n7 V. L    StackImpl() {1 i# a! V! h6 o5 c' L
            element = new Object[defaultSize];4 v+ A2 Y3 _. c$ r8 W! x3 b+ N0 A# D
            maxSize = defaultSize;8 [7 l! w' V/ b" B# {
        }
    7 ?* N: i# s- H. N' K
    $ [7 R0 z6 g8 g- K3 o# m    StackImpl(int size) {: D: z6 n. O. Q  W+ |3 c6 x  r0 m  U
            element = new Object[size];9 R  E# [3 i4 g; F- w: ~
            maxSize = size;$ S) S' K! [8 k# O$ @6 ?
        }
    ; C6 U2 C: B6 g- ?" @& E1 v! P! @( p- b
    + o8 m! u/ e% O$ S( [3 R3 [    @Override* b6 }+ _# f; e$ H; m
        public void push(Object object) {! |4 h1 r; y% U+ P4 n. a
            //如果元素个数已经达到数组的最大个数,则进行扩容. E' J4 B3 |. I9 O
            if (elementCount == maxSize) {
    , b1 C7 H5 p* f            element = Arrays.copyOf(element, elementCount + defaultSize);
    9 _" }3 r/ s! D3 H! Q) R  t- w        }, s4 l& I) K$ p6 d+ V
            element[elementCount++] = object;
    5 u! R1 c% V( r! o4 y. X# D1 ~
    3 V7 w; u: e% E' X) b5 y    }
    * P7 N# ]! r1 q/ Y; Y0 o0 o        // 本代码未实现数组的自动缩小,具体方法可参考JDK
    ! ?  l" ?6 b% c2 i    @Override
    + r, r2 I! Q, U  K9 P% h    public Object pop() {
    8 M! W$ [! j! ^, ~        if (elementCount == 0) {, k4 L' @3 }( S6 P1 Q
                throw new ArrayIndexOutOfBoundsException("栈中无元素");5 ]/ F, p, B$ l- b
            }3 |5 F+ X" |3 c# N/ g+ {
            Object object = element[--elementCount];7 k7 t; h) |+ |8 Y6 A$ c1 H( H
            element[elementCount] = null;6 e* ^* v- F( }$ \$ h' _* I
            return object;
    1 Y& Y4 @9 D  @$ o0 E    }# c) I" f3 H8 B) f2 H" r
    $ W! v1 f% p( F  J
        @Override2 }( a& ~0 x$ l8 [( [" `
        public int getElementCount() {! t. R0 q+ E& X- X+ D) m
            return elementCount;4 Q! O8 h! N7 `) T; ?" \
        }2 w5 A4 {1 j  y7 M7 Q5 R# ^6 d
    ; g5 y& ]. D9 O6 ?$ }7 @
        @Override" I/ P* r8 @) b% W" \& z
        public void traverse() {
    - z& m+ C# ]# |0 `; [. U; l        for (int i = 0; i < elementCount; i++) {
    1 m) D( [! A3 ]/ Y1 h            System.out.print(element + ",");5 g' ~' ~$ Q  W% A" i
            }
    1 K, P' e2 ]/ H8 c        System.out.println();
    0 ^' f4 }/ e: Z7 v    }
    $ }! }- f: g$ |5 L; a* g3 z}
    2 S6 M6 X, E* S. t8 |3 {3、栈的测试+ c/ F2 v. J/ S& v* F" H
    public class StackTest {* R6 k$ \, S9 j
        public static void main(String[] args) {" `$ Z% ~! S, P$ {2 S
            Stack stack = new StackImpl();
    . M' R- B) F7 R/ a( z1 a& a) V3 p8 x  J7 a" N$ ^' [
            //第一次入栈:压入1-15  o  n( K( A  d. R% k0 H! h  T
            for (int i = 0; i < 16; i++) {
    ' u- E  a6 h# c            stack.push(i);" S. V/ h0 p8 X, w, L0 D/ a+ B* e
            }( H/ W  Y0 s6 S1 w! {
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());  M: `# w) h, s" ~0 q
            stack.traverse();/ {4 N' Z; V  j2 `" x5 S1 p, E

    * C& ~# G" Q$ L# J5 q        //第二次入栈:压入16-31
    ! u( m, K7 c1 \3 n% M, a2 a% S        for (int i = 16; i < 32; i++) {
    ) I# X; _: C' L. P4 \$ {            stack.push(i);* l7 D7 w% n+ o5 @4 \, ]
            }
    9 m/ N% z2 w. ?9 b0 |! T        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    ) r) [3 Q9 d% c7 u0 D        stack.traverse();2 ]5 [( A; ^* @; n6 K( Y! l1 V
    + M4 r1 y5 r! H+ f# M
            //第一次出栈:取出31-16& n0 t6 y& ^4 ~/ f  c  X) p5 b
            for (int i = 0; i < 16; i++) {) S3 E* O# Y. W: W1 ]* m' G/ }
                stack.pop();% ?# T# {, ^0 B, t7 K2 T; |
            }$ z1 N9 {; ~. B9 b3 q# x' u
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ! P$ r" ^2 E4 T6 `        stack.traverse();
    0 E" e( i2 u# R) p& ], X
    ! c3 Y2 V  _. Y! p* k/ T$ z: z        //第二次出栈:取出15-0* j1 P2 B# C4 Q8 g- O6 F% X
            for (int i = 0; i < 16; i++) {
    2 ~6 j6 Q5 {  e% x  F            stack.pop();
    2 s- O# A9 q) ?5 p6 U# t8 V/ @        }' W  K+ N$ d  U8 U6 c, f, f
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());+ X! H6 U& D4 E* U) C
            stack.traverse();) p* O% U* F. z, G7 N- M
      [/ g- _* S3 T0 d2 l
            //栈中无元素,出栈报错
    7 w: O7 O8 \# w2 e3 n        stack.pop();& L: F1 u, e! y% t6 |

    " o1 c& i: t% C+ u" v- l4 K. t    }5 O6 @. S9 k0 {* \
    }
    $ a3 L0 k# d) U7 u7 D8 `% b2 w 3.png
    7 s+ S! h# F8 |9 X& \4 I3 Q; s. X) _4 f

    0 u' ^$ @6 J7 a! [* E/ h
    : \5 B5 |5 J8 a三、 用数组实现队列1、队列的接口定义
    0 ]# O- H. k9 r8 q2 q+ o  G- Q  ~/**) n. E% i; W3 W0 ], Q$ \/ H
    * 定义队列的接口
    , i9 E1 ^1 f- M% V *
    5 o4 `+ A, {; G * @author zhuhuix
    5 O0 d) T0 Y8 E. L4 z * @date 2020-05-01
    4 ?! v; F) C! [ */8 N. O! C# I" L% U9 I+ ]3 d
    public interface Queue {! t: u/ b6 U. p  m  ?5 W
    ( e2 X: H: B0 J  l8 [: O) ^. @
        /**
    8 M* u' d, b2 W% d" |/ ]/ p8 K     * 获取队列大小
    7 [: N& E1 C$ D* |  Z* M. d     * @return 队列大小6 t5 t3 S0 W! _) z2 _7 R2 M9 k
         */
    ! S+ ?, O- A; E9 L9 O) t    int getMaxSize();
    , ~: D  F5 y% s5 n. M) _
    4 s" P- w; X  g- n! _    /**6 z9 E, Z. c. x  @( v
         * 入队) k8 K8 q# ]9 x- k: {' P
         * @param object 入队元素
    . y2 e# n5 n; w+ N; U6 g3 d1 R     */
    5 h+ l* o. H/ H0 v+ J* d0 V- N    void push(Object object);& u" f3 J6 @  q; T/ f

    2 E; b8 u8 ]+ E9 ?$ c    /**
      J5 a7 B; p4 U% u. {2 U     * 出队
      i0 ~0 {" H" X4 d/ T, P( ^3 P     * @return 出栈元素& i9 a+ p! ?; q. n2 _. r+ s- y. l$ X
         */
    + u! a  L2 s/ K' i0 @: b    Object pull();
    8 }3 Z8 [# E" H9 u$ z/ I. U
    5 |. G( `/ K  V3 h2 w    /**6 q8 i+ x  _. q) o
         *  获取元素个数
    # D" \; R" E# {' K0 _5 p/ [     * @return 元素个数
    $ [; N! [: c+ S5 C: I- w* x7 N     */
    5 `2 v- ^9 w% }2 C+ c    int getElementCount();
    7 h9 j, {# p5 x( b' y/ y# ^' f; d' i# ^3 g7 ~* M
        /**2 W7 Q% P+ u, ]' \2 w# g- @7 m; V
         *  获取队头元素
    + T$ x( r2 O# y" i$ d     * @return 队头元素9 T) D' o7 K3 v- E
         */
    8 k! ?! D. [4 i2 W1 q7 \6 R% ]    Object getFront();
    7 r7 J4 k$ c; r5 ?+ G, W- R' C6 ~1 E2 q% m
        /**
    ( ~. ?7 j/ `/ y  c; }2 {     *  获取队尾元素) ?, y/ _0 P4 A2 Y, z
         * @return 队尾元素
    - l. A7 D% t- n& e) u     *// G9 V9 d/ n4 d+ N
        Object getRear();
    / N6 \% H9 }- l6 ]
    * }( t& d1 f5 R! D    /**; \9 k! B( }5 Y' b* f4 B
         * 遍历队列的元素+ c: U) o& U; k4 ~+ [6 i0 H( S
         */$ X3 a( w1 \) p3 |2 T$ @, L
        void traverse();
    ( k. |7 t# R& s% l3 G}
    - m$ ]+ r2 k! v; M6 Q; Y2 \, B2、队列的接口实现
    ! j1 ^* N7 q  g1 E5 T3 q6 l/**
    ) z4 R& }. F9 E5 b' u! G; l6 M * 队列的接口实现
    % \+ r2 [3 B# D: |( ? *! E" ^; R7 d) @. C/ t) W$ r* n
    * @author zhuhuix8 W) n2 @* D1 @% `1 N
    * @date 2020-05-01
    & J& K. O- S% H/ s6 E1 [6 e! M */5 R- [5 M- W2 o& v7 h' z  C
    public class QueueImpl implements Queue {9 v$ S8 L) [# R, w( f" b# X

    & A* F# K! O8 V% L! [( ~5 q# I5 u    protected Object[] element;: O4 a  w/ u( l! J+ U: ^
    ; B% q0 J% s& R& N; d" S
        protected int elementCount;
    7 }( D3 `: Q+ t" w, F
    ( C( M" f8 R1 s8 o" o    //队头5 a1 g* `+ I0 B% n  e0 n; q1 s
        private int front;( o- S1 @- x; [( [! l4 D' T2 V

    ( p; f8 @3 e) T; L0 {3 f    //队尾) k- p) c0 e2 U4 v' c4 ?; ]
        private int rear;
    . t4 l  x* m7 @4 p. N3 V- a* f
        private int defaultSize = 16;
    % u+ O" ]% O$ H$ \; ]6 n
    - u- F& R, X! ?/ n0 z& k+ g* O7 t    private int maxSize;
    & D' [4 f; B+ _7 V* J- [
    4 v$ h5 @- L$ w    QueueImpl() {+ [: g: k# @& O+ M1 r
            element = new Object[defaultSize];
    4 O. V% q/ s; K# [& I2 t2 z        maxSize = defaultSize;9 t% q7 q' ?4 Z9 [- ^8 q
            front = 0;
      C/ R' Q* F- c- j1 t        rear = -1;  h. K9 F' _, y. ^
        }, j5 P5 D" e$ U: Z) Q" m4 w. P

    , E8 T; W, O0 s, `) B    QueueImpl(int size) {$ h8 m  j' b  l7 l% \7 z3 T' k
            element = new Object[size];
    8 H& e' A3 D; J9 p0 U# Q3 U+ l        maxSize = size;0 m5 d+ g) |& r* o
            front = 0;
    8 @! N4 T+ z9 G" J4 Y  E        rear = -1;
    2 V; M5 c2 p2 C0 @: g* b3 |9 h    }
    : K( b( L6 O3 T( K
    + U/ d# r& P' X    @Override
    7 e% S# L+ A" p" G2 ~    public int getMaxSize() {
    7 z4 w4 b" u2 f* _7 N        return maxSize;
    1 L5 O+ d: H+ ^  ?# m' J9 x6 c8 y    }/ c; ]" b, _. n+ L, f  A
    9 l8 t! y7 O' ^2 j& \/ Q+ D/ j/ ~& e
        @Override
    3 j# ^5 B! U: P7 v& [8 q+ h    public void push(Object object) {
    4 m& A7 s8 U6 R3 K  s8 I1 c        //如果元素个数已经达到数组的最大个数,则进行扩容
    # \) M1 S& u. b/ ]        if (elementCount == maxSize) {( H/ _  e+ e( P" x. ?3 @1 k9 N& B
                throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    / k: t- d2 R2 n6 u8 M$ H, m        }
    3 |! l, L3 T0 A3 F1 A( O        element[++rear] = object;
    & P& ~: V" [2 T        if (rear == element.length) {
    % [0 C5 k+ i3 H0 i% o# B            rear = -1;
    * N; `+ b/ u. ?* h  f        }1 Y2 j8 X9 V, l0 ^
            elementCount++;
    ( f3 @' o! Q# X! r    }
    8 o3 B0 V2 R% Z+ T- s4 u' a/ Q' ^5 T2 c0 }7 I2 o: I6 Y- g2 Y% w
        @Override
    0 I& f7 n& |- \3 w! f    public Object pull() {
    3 ^% }8 Z& G) {, `        if (elementCount == 0) {% {& z) F% K" O' z9 q% n
                throw new ArrayIndexOutOfBoundsException("队列中无元素");3 S* C8 c: e( E- Q; t
            }
    ( h; w7 s4 A- `# b        Object object = element[front];- t: J7 }$ X4 Y* d- g' b
            element[front] = null;, h& J2 v; ?( A. l6 q6 C' O* L: W
            front++;
    $ e+ p9 _; w0 ]3 l0 Y( d        elementCount--;
    * o+ W( f, t( l# @9 O+ l/ u        //队列清空,队头队尾恢复初始值
    2 p' p4 w8 O) P1 Q7 P        if (elementCount == 0) {
    ) J/ x: x9 k& W5 Q9 ]1 U$ z" M            front = 0;0 I" Z' ]0 |0 w2 }$ o
                rear = -1;4 a! A/ @( r  m
            }, t# B0 z9 ?, U( K
            return object;" T% }$ b3 |9 @& D) S9 i$ f
        }
    ' V: T: o' H% B4 f; k% [9 D, l1 M6 B! b1 U6 U- D
        @Override
    + m- K# J3 ]+ h; e    public int getElementCount() {. J' C6 w. q9 S( y6 a# i  _
            return elementCount;+ H1 W% B, Z! K
        }
    8 A1 j! Q% A) c. S8 Q% f
    : I8 @) d' e; ~) S' J5 h4 F    @Override( f; V9 D0 _& u$ o3 [# o8 E  Q
        public Object getFront() {
    8 n' ?" }3 @7 D        if (elementCount == 0) {
    9 K; m  T, t5 a7 {, e            System.out.print("队头无元素");
      E& A0 H* ~4 M8 S1 @$ D3 u            return null;
    - \& _: w! o( |4 u" ?        }
    % n) H( I/ v- j        return element[front];
    : j# @9 x" T& z* r3 y    }
    , ^& a$ t; A- V7 _; X$ e( G% t/ i
        @Override: ~! q: U- m) S0 B! @" |
        public Object getRear() {, L! v+ B0 a' u" J& g
            if (elementCount == 0) {. F# @8 [, u8 \3 s& w& N
                System.out.print("队尾无元素");
    & h0 X2 f8 j3 g. C, \0 ?  K            return null;
    , N# {' H+ n! }: j, c9 ?3 h& R        }+ E) m2 |' m0 ]
            return element[rear];
    3 F. ~* ^5 ^2 @0 t  \2 m- h    }
    5 k) x' c& G' l( v' F1 N3 R9 |3 K) d9 L8 ^9 U8 c5 G& G+ `0 B
        @Override* X4 r* L8 H- O9 }9 w
        public void traverse() {
    ' Z+ v& D: j' J" d# V& R" O        if (elementCount == 0) {4 M0 u: p4 M) ]8 B$ k
                return;
    ( o" L9 W' G% ~) e2 h        }: m/ s: E  @1 c( R; T5 Y
            for (int i = front; i <= rear; i++) {
    0 O: v( k! B  d- a) w, g$ u1 y            System.out.print(element + ",");
    2 |8 F" R5 G+ W$ Q! o/ f        }
    % N3 l3 Q8 U1 ?+ Y+ v, F- O1 k        System.out.println();3 R  Z( a( b- s% V! N  i4 p( i
        }: W: i& c# D5 [' ~" M
    }( I9 L* L7 K% c: _
    ! s% _0 H+ W+ q; P' Z4 d

    * S; p/ I- o, [: y0 f9 N! T3、队列的测试
    3 _, B( w! {: @. z4 e/ V+ F' @2 Lpublic class QueueTest {
    ; S% s. J! T* W4 Z, F. B4 E    public static void main(String[] args) {/ H$ n& r5 ]& a
            Queue queue = new QueueImpl();. `' N. X! {0 E9 B/ G

    ( I) P& b- ?( [        //获取队列大小5 B2 J3 q) U$ j1 E
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());  k/ k! ~* f) K; w' G. F

    " O" }* K% @9 z2 W9 v0 \        //第一次入队列:压入1-15
    ) I. L. V3 K' q( \        for (int i = 0; i < 16; i++) {
    $ X7 N* l0 b1 Z8 m% J) @            queue.push(i);
    - A+ w" B. T! s' g8 f3 ]; V  F        }
    , \8 o* F. e' g9 c+ q, m. w+ E        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
      K/ E$ F9 \7 W1 q7 N$ Z! P4 v        queue.traverse();
    4 W" N1 F- M' {) y" B1 j3 b7 V, K+ W        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());) j: d  t+ B; ^0 W
    6 q) D8 v& X$ G/ p! ~6 @- W
            //第一次出队:取出0-15
    - X  I) i1 v. v+ f+ f, a9 T        for (int i = 0; i < 16; i++) {
    ( t/ C' V6 ]$ G1 A% O  |            queue.pull();
    ! l: _* W7 g* H9 C+ x) F* R* l3 ]0 J        }
    5 s& o$ \: j5 c9 c6 w9 S5 m7 c        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    5 ^5 t  j2 b) `4 u: n        queue.traverse();
    3 L7 ^1 X- K. _/ X) O4 o9 o4 O        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    : X2 }/ K* g" j) o1 M; Q- s0 N# f. r, Z8 P

    : u3 ~" O4 D" h$ j        //第二次入队列:压入16,31
    6 _3 N' k8 r4 K  X9 w$ T        for (int i = 16; i < 32; i++) {
    0 B5 ~, c# z9 {# {5 n! p8 I            queue.push(i);: ~8 D. h& S! F, Z. P
            }- R7 C$ ?1 u$ S: K1 a, C. Q* O' Q9 M% W
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());! P0 q/ i1 q1 Y) f- N4 p! f
            queue.traverse();2 b. j) b- V6 v" z6 E
    6 K! M* G! v3 T. N+ S$ Z$ d+ T

    + R3 `) q  n; n! x) M        //第二次出队:取出16-31
    2 T  b2 O/ l) c! m5 V2 d6 T& E0 H        for (int i = 0; i < 16; i++) {
    0 c9 E$ _5 T; k# \+ S# |7 w            queue.pull();9 l0 P& d/ q; U
            }* W0 l2 O8 K) h
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    $ [0 ^5 T* w7 @7 ]4 ~        queue.traverse();: t; }$ T4 L8 W* v
    : L) a) F% B' S( S2 S- J5 @
            //空队列出队报错
    % g3 Z0 g; G  _2 l4 i. D1 b        queue.pull();% Q0 C& v5 y8 ?1 [4 x9 J% K
    6 T& I0 X4 P0 k" ^: r8 p
        }) I5 C# F5 K4 x- N& _
    }/ n# [' T' n& x' p0 c8 \- P3 `+ T
    / t! o# K1 E, q5 s2 b
    2 _4 K' ]0 e# A5 I* r" p

    5 G7 d8 J) A2 @$ f" w6 l) k, N( g" g2 S
    " t& L4 Y2 H* G9 n
    3 y3 J8 z- B% ~3 M$ q1 Z$ S

    , x. {" W, v) ^( ^9 ~3 _8 \- g$ ]3 S/ \: T3 G, L

    7 |$ l, P- O! W. y; U8 W/ k. P$ E! W' I( O( n9 ]5 E1 N0 y  M3 H1 l
    9 e0 B5 [  Z6 d% o) S

    ! K6 ^/ h$ Z2 i! c2 Q
    ' |2 W" w+ s' S4 |  l. X) j3 ?) n' m/ I4 O
    7 s5 f+ ]6 Y% g$ }
    ————————————————
    9 d% u9 ^7 j9 |" v' q版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ q5 {0 ?# J- T! M6 ?# t
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785, {& f$ }# m9 J" Y* Z
    ! M& N( d4 ^; H% G+ ?

    , H  p# l4 a8 S% L, Q$ S* p
    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-26 15:50 , Processed in 0.423051 second(s), 55 queries .

    回顶部