QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1714|回复: 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
    " l3 }7 W7 m: x, P& R, K. g* W# u
    数据结构——栈(Stack)与队列(Queue)的手写实例0 [; c: K; s- R  ~! Z
    # G0 p. }* @3 O% d1 q) R
    [color=rgba(0, 0, 0, 0.74902)]文章目录

      4 A$ o, a( @' j! f& C. m- j+ X: s' H
      • 一、 栈与队列的定义
      • 二、 用数组实现栈1 N( g# F# C: l
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试" p' k5 `0 O! p( l; [. K) e- G
      • 三、 用数组实现队列
        2 r( o6 O+ M; t, c
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          9 Z7 U& Q; i  J
    & @* b8 x' v: C) C+ I
    . y' w! I+ J% o# W
    一、 栈与队列的定义% K: v; Q" P4 D% R
    栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    6 ?6 X' m  k/ J' Q1 c/ A 1.png
    3 i4 p* B: V7 u 队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
      V7 W9 S! h! G) B  M1 i 2.png
    2 {% B: y9 B) `8 \% j3 a! ?3 |" `" K# J2 t- _  R
    8 y& n0 P; z& u: ]. G$ [; `
    二、 用数组实现栈1、栈的接口定义+ M* t: x* C6 Z6 m4 X
    /**
    , G* q+ ~( I0 ?( F0 v: t; g * 定义栈的接口4 H) D4 n. ]( h9 R1 @
    *# F# S& l2 N8 |0 e  Q, Q* |
    * @Author zhuhuix
    8 q- b) |- V# P; \ * @date 2020-05-01& p9 R  J' Z6 j
    */
    % I% q5 V- U/ ~: L% [/ Mpublic interface Stack {
    6 M: F8 F7 W1 Z: G! _    /**- \: e. P3 C' b0 V6 Y$ w- {7 w
         * 入栈
    + }( a' k9 ]% s3 q1 \5 ]. t     * @param object 入栈元素. x& p( t4 G- j$ M8 I& F
         */
    5 D1 m6 `* F  M" i    void push(Object object);
    / R" B$ |% g# S! F1 W, f" |' a& D8 q: \
        /**2 P: I; f1 X1 B2 d. {: W. J
         * 出栈
      |% i  R& s, m     * @return 出栈元素
    7 p/ A/ j' C( a7 X* [% v$ q6 t     */
    7 o) H; p9 V  G    Object pop();
    7 E) l; Y7 m; U( W7 F0 D& U" t  {: @( W* v6 l
        /**3 A# R1 j" A+ \. _$ T
         *  获取元素个数
    * e7 C. \( Z: T8 v     * @return 元素个数
    0 |1 W8 {6 E3 m  d2 L, K     */
    ' U, I# e1 h- K+ T    int getElementCount();
    & @# W; T* H9 x; @6 ^, k7 @1 Q2 Z6 b; ]0 ~2 T7 ^- G, [! t! u
        /*** }: r7 G! I/ D* c- t
         * 遍历栈的元素
    , I7 @; s' @. A* b8 N4 [' C     */
    & j% N# m3 O0 Z5 j* c" H6 ]9 n    void traverse();
    0 B0 _6 a, J* k' _4 c
    * G0 ]- }: S" x% m. [. |}4 l7 S* X9 i# f" J
    2、栈的接口实现
    % C- D  S) A3 w( o) x/ t* s/**- I; c2 S7 P# Y2 c( y: u
    * 栈的接口实现
    # S; D/ E5 m6 E4 @- \, c& O+ H4 b *" F& u! K& c7 ]4 A' E
    * @author zhuhuix: R0 @  |; d* B& S
    * @date 2020-05-01
    5 Z% u- @7 H5 F */
    3 i$ c+ ~, |" [: d: a3 bpublic class StackImpl implements Stack {4 z$ e8 Y! Y" s5 f# D2 O1 x6 Z
           
    % \# u+ U0 j5 k* \- d    protected Object[] element;0 u& \# z  v; T" j! Y
    $ v1 ^# v8 r/ f2 E; q. u
        protected int elementCount;
    # Q8 d  v  u; V( q- p: c+ y: n& w; e$ K# U! x1 M
        private int defaultSize = 16;
    9 y( C; g$ t9 x, s; w; @; R" u- ?. }9 O( V! T7 `! {! }4 [
        private int maxSize;
    $ d' B, Y/ P+ R" @' W' l. @/ {6 O4 w* G: F
        StackImpl() {8 c; ^; i; w- I9 k: }. ^
            element = new Object[defaultSize];, o+ S" N/ g8 {* j3 v- Y2 `& O
            maxSize = defaultSize;% V( L3 N+ `; ^! R1 k
        }
    . c0 z3 v! r' m: `
    % Z1 n0 R7 h0 f( V8 Q' h& c! t    StackImpl(int size) {
    0 h2 L3 i/ c- P% m( w8 N* r; ~        element = new Object[size];) R, F8 \  u; I4 v7 B8 v2 H0 {3 u4 j
            maxSize = size;
    $ G; U! r# O* C/ O    }' d9 x! w' \7 J

    % E+ l4 a5 E% u    @Override; T% q  U# e" n9 b) \( D
        public void push(Object object) {
    ) w5 Z7 f) R8 [" F& u# w( R        //如果元素个数已经达到数组的最大个数,则进行扩容, P, c' ^6 j: z- }7 b) ~
            if (elementCount == maxSize) {
    . R1 Y) V2 g! T7 M: F, ]; _            element = Arrays.copyOf(element, elementCount + defaultSize);2 p) R, _# X, g! L8 F. H! g
            }
    , u. q) D0 g6 V- w3 z) @        element[elementCount++] = object;
    7 p" t6 L6 }# F% T; |" W5 d7 G1 ^. a# D# b* {
        }
    ) t5 t, ]' w5 u. B" @        // 本代码未实现数组的自动缩小,具体方法可参考JDK+ V; {' e! Q, k/ r- J# C8 N0 r2 ]  b
        @Override
    ( g  Y# h% \2 E" e    public Object pop() {
    6 i8 G# g( ?  B! [; d5 P$ P% H        if (elementCount == 0) {
    4 ]: F* R7 t2 F! @. i5 C            throw new ArrayIndexOutOfBoundsException("栈中无元素");! h! r2 q7 m4 S
            }
    ! Q# c2 h+ L' R# \/ Q        Object object = element[--elementCount];7 K9 y; n* T3 h8 r7 ]6 S$ U
            element[elementCount] = null;
    , W7 n. |6 _' J" F4 F        return object;
    + \+ h5 L- w/ D' ^: H8 E8 y    }
    # d$ D7 J2 M3 [
    4 O7 H6 A$ K+ c1 c    @Override
    : O4 |: L  `0 V0 b& P! G8 ?7 B    public int getElementCount() {
    : T/ D* s) i( a/ {        return elementCount;4 A  ]" _6 b* c' ?/ H+ a1 h
        }
    : d9 h; N% F6 v$ S- ?0 w; Q5 l0 o" i' a5 L* O: r
        @Override1 W; f/ k: _$ \' `$ ?8 f; U
        public void traverse() {
    * I- |6 @3 U$ C& \        for (int i = 0; i < elementCount; i++) {
    0 ]9 _! G( E5 L% W3 `$ [. e" z; u            System.out.print(element + ",");
    : O: o5 m; y/ F3 X        }
    " G3 X& s; `% y( m  d        System.out.println();
    1 T* m# e3 G; s    }2 Q* M4 w6 i) K2 ~' j, `8 m3 \  S
    }
    * K8 h: _4 r* e+ J& Z; v3、栈的测试) ]! K* f% H, j' r4 a  R, E: x. z9 [
    public class StackTest {
    ! n* [0 ^' t- F# Z    public static void main(String[] args) {
    * v( w  J' Z& q; K3 Z+ m        Stack stack = new StackImpl();
    0 T' V0 @& H- Y/ l# q! ~; _& A0 ~; @& [% a
            //第一次入栈:压入1-15( u3 B: Q1 H1 w0 Z* o" l" C
            for (int i = 0; i < 16; i++) {9 P. g4 O8 M& a7 V- n
                stack.push(i);
    8 Z6 z9 ?# o; @, |& ]+ o; O' _3 W        }
    3 Y/ N! h! g6 h$ }" m        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    1 [8 H: y# P- B# S2 V1 S( J; n        stack.traverse();! R4 C7 Y  }" Q) w) l% `5 G9 X

    ) L$ M. F+ Z$ X# M2 g8 Y* j7 l; e+ g        //第二次入栈:压入16-31( i# a+ _$ n; ^0 y6 o: j- }7 b8 \
            for (int i = 16; i < 32; i++) {
    5 _- s" J2 z/ R* R+ x. f& C            stack.push(i);( X6 D; _8 j& [! M. V0 b, O
            }
    ' H$ r! D9 b8 q; k" I9 S! I- E' ~& l        System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    ( d; z1 G. Y" g: S        stack.traverse();- {& x* ]4 z9 }5 ^! W; z, X& n4 r5 {
    7 r, v$ q) l. n+ n9 O  l7 e
            //第一次出栈:取出31-16
    4 }' z5 @5 `  V2 y$ z; Z        for (int i = 0; i < 16; i++) {2 O3 D" B! S8 Q) i. n5 N" P
                stack.pop();
    3 ^) F" C* O/ k8 R0 t8 j        }
    8 E' ?3 l7 _2 k4 Y: \/ _. I7 {7 E        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());; w+ T1 U8 S7 u! G) w/ l
            stack.traverse();6 z. f5 R: y  ~$ w1 k3 ?6 p. i; @

    * @$ ]: }. a$ X1 t        //第二次出栈:取出15-0/ `0 F8 E6 X) j2 g0 @
            for (int i = 0; i < 16; i++) {
    : L% v& ]! l5 }( Y7 W1 W            stack.pop();
    * V4 v8 {% H. Q7 S$ x; s        }
    ! t! Q" N% L0 L( `        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());  L# _6 H$ p2 |" w/ x( ~2 x
            stack.traverse();
    ! L: Y  _1 \' R' P  `# F
    - @! d9 R1 B. U/ `. l0 {        //栈中无元素,出栈报错
    * Y6 m4 h- h& J        stack.pop();
    7 a9 k7 y* a' K. U2 \  Z- \" t7 v
    3 ~  \% o5 f7 [: {5 h    }
    0 s3 m# i) N+ w# y; d}
    . L2 @" C' l% ~0 ?. {. q1 V0 Z 3.png 6 J# v( T. p2 \6 i# k; y$ s

    5 h3 J4 ]- f% M7 @3 ^2 ]% n- ?
    * X4 d' O6 R4 y: q0 R# a. B3 B( b7 X0 V) s, {3 q- J
    三、 用数组实现队列1、队列的接口定义
    6 }+ l" K6 L- Q& @" m. ]2 B/**
    - ~( v1 B! Y+ ] * 定义队列的接口
    ) y# I$ J6 D6 ^5 y' I *2 R/ k9 a- u- M5 ?7 q6 a+ y5 p
    * @author zhuhuix# r. c8 `3 ?* u
    * @date 2020-05-01
    . x( L; J0 s! G% B. Q */
    ) |$ Z# _6 w! l1 mpublic interface Queue {" H* c. x4 [8 V0 Q& C. W6 I( r
    % K' R% l$ C9 x: ~6 O; q
        /**
    % [4 s2 f3 n# M# j; Q+ G     * 获取队列大小
    # ^4 [/ i7 j2 i1 k     * @return 队列大小
    + {4 }4 m4 a8 F# u% f     */
      r0 ^5 r; q: j9 X    int getMaxSize();
    ' o4 c! D# s+ P8 e
    4 l5 I- x+ L- T2 D0 P+ ?" H4 N    /**" ?4 K3 d3 I" g6 M  {% x  L$ x1 a
         * 入队1 @% h: W/ F) r! q% ~
         * @param object 入队元素) @+ d) {  A7 i3 u& C: {
         */
    . z8 L1 W; z' q6 m; t3 L3 b    void push(Object object);6 Y4 d0 j6 I. M; s7 ?

    . t4 J. z/ w0 G7 D; m5 t: g$ f    /**
    - x$ A# X! e" M0 E4 S     * 出队
    ( Y' o+ J+ o( x* m( _- |& w9 b     * @return 出栈元素+ d/ g4 F  J3 A2 S) f
         */6 I' o) _4 x9 r/ Q
        Object pull();
    3 N8 I0 V6 Q- i. m: d" G) O' y+ S. C- J' a$ J7 T! {
        /**0 D8 E& B% i  P! i6 T0 \
         *  获取元素个数' K5 i( `% V" O5 ~8 X6 [
         * @return 元素个数3 u0 P$ k) T) q0 I1 g, E' v
         */
    4 A1 O- V# j: W- D    int getElementCount();; p3 l" Q8 i- `5 D

    . q, i+ [  E& i    /**
    % I  [3 X$ [$ y0 B( }, ?     *  获取队头元素6 P8 I7 @; k1 j+ L9 D
         * @return 队头元素
    4 L, K5 D9 S! I4 Y4 `6 f" \# j     */
    , N( h; N. Y- k. L( D, U- M    Object getFront();
    # {0 p7 l2 A3 g/ l( g5 a9 J) {! ?# A, V% L# T3 @5 T# i& G
        /**
    0 n: U7 V/ T1 S. c: h" a     *  获取队尾元素
    # A5 ], @, ?7 C% i+ s* t1 N# i- A     * @return 队尾元素/ |  Q4 l# v0 N2 t* l
         */, {9 {' ?$ r4 K6 L; y8 z8 K. `8 W
        Object getRear();) u( `( J$ n8 e3 _; V4 C- P8 S: y
    3 h* n. X5 M* [  ^  ~/ m! R
        /**8 L; b% ~8 s" H
         * 遍历队列的元素
    ; |1 ]2 s* e2 @! j3 m$ k     */: n. Z# ^+ `( I+ B
        void traverse();* {+ U. f$ j0 I( F# K. {. j; |
    }7 v% @1 n3 _# f3 q4 y
    2、队列的接口实现
    / M+ b) ?) V9 b% W* G  o, o/**8 o. Q  _/ u4 }- v1 D; D' S
    * 队列的接口实现
    5 |8 X% l7 V& B- |& O7 ]4 P" I3 q- \2 K9 c *
    0 o1 t, Y' h2 ?# C6 w' m" ^ * @author zhuhuix
    3 j( w$ Q7 \# D. V2 ^7 X- x7 f * @date 2020-05-01
    6 t6 \+ K; M5 T8 `5 _ */
    , |% }( F  T( fpublic class QueueImpl implements Queue {
    % C2 ]6 M; P$ Q$ A, ?
    + v5 P0 u+ u% j    protected Object[] element;
    7 ^/ H6 [) v8 @" M" r" `  f$ l. j6 ]! t; f& K+ w
        protected int elementCount;; s8 {9 R0 e  I/ @( [
    / M4 x- E1 b% O8 k+ T/ e
        //队头* }5 a; q; @  M) Q# h
        private int front;5 A/ ^8 ^6 d; J# f4 @( q0 s9 L% Y

    $ q( v/ Q4 h6 s' N    //队尾' E1 d  q! H/ P' ]& E
        private int rear;) s1 F6 x3 w1 D( l$ c

    4 ?# ]9 g- K! S  M& v* I    private int defaultSize = 16;
    * H+ q* S) |6 ^4 ~2 S& }* n1 I  D* w, U/ f  t
        private int maxSize;
    7 G9 |( A2 @; w8 e5 H
    6 T# C- I/ p) }- S    QueueImpl() {
    ; Z; v, A/ r" ?1 ~+ I! X        element = new Object[defaultSize];
    2 N4 q; G' j3 a- S3 b        maxSize = defaultSize;
    # |; N4 s" p; U7 g        front = 0;
    : C4 I) _: h# c, i1 W4 d8 u& U        rear = -1;" u) j& W3 M! o" d! m' \
        }$ r, A" Z: `3 k; E% T

    - R" V. P" P  Q7 t2 |& ^. Y# F    QueueImpl(int size) {
    6 X  b4 z4 Q' X4 x* O        element = new Object[size];6 E' }, {0 v2 O2 i- P
            maxSize = size;
    9 e, }" M  Q2 o5 J        front = 0;' }. T: f2 E: E" s
            rear = -1;, ^5 |- k3 G6 ?+ \0 {6 G+ W8 K0 U
        }
    7 q" R# u$ B- [+ N. t
    6 T3 R! r& h4 _: f    @Override% w8 l$ \4 |4 ~, p' {
        public int getMaxSize() {9 Z. M" `2 ?3 e0 h
            return maxSize;
    8 I# `6 ~& ^5 u" n: F    }
    8 T& Z7 ]/ d) U* C, k& E6 T; f# D1 s4 \" j: w9 \; V1 F: {, S
        @Override
    ; j; D: y/ S: Z6 ^5 m) _    public void push(Object object) {4 x$ b0 T7 [& P! v0 A
            //如果元素个数已经达到数组的最大个数,则进行扩容& J8 I* j) C. o2 [9 V1 C
            if (elementCount == maxSize) {
    ' u/ w+ ?( r- ^            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");& R& p  G+ r- J( J5 ~* r
            }. C# @5 q" B& L2 W% |( M
            element[++rear] = object;/ [1 i+ |7 k+ X' J6 O
            if (rear == element.length) {
    - @: s: T2 B+ L            rear = -1;* f, k9 E5 M: g/ J4 Y  \
            }8 a4 c; x( Q: g/ L: n- C! F
            elementCount++;# Q8 a- F* ^$ W3 o$ w
        }
    6 H' k. T) j. ^2 }" v2 I' t7 t4 |7 T  F
        @Override
    , A( \; Y4 U1 M8 ?( \: H    public Object pull() {
    : ~0 J. _. `' h1 Y# Q/ |9 E        if (elementCount == 0) {
    ' j5 A0 k  X" q  u* |" N! f7 y            throw new ArrayIndexOutOfBoundsException("队列中无元素");& L* ~  M# M! s% Q. a# x
            }4 M/ N3 K9 |6 e3 ^/ A/ ]
            Object object = element[front];
    " `" E# u1 {7 Q- U# P        element[front] = null;
    1 r+ G! \, P4 G! N& p; V        front++;" H& v6 Q1 |( U" X+ g; M: h7 m8 ^
            elementCount--;1 f2 O1 r( @* L; ?0 g0 \2 P! j
            //队列清空,队头队尾恢复初始值# X' C) M+ Y5 c
            if (elementCount == 0) {
    * n* l8 m8 `% ~5 J7 ~/ N            front = 0;/ M! f3 O7 e7 k0 C" I- K, j
                rear = -1;- j4 n* j9 j2 ]3 z% H; Y3 I0 D
            }
    ! `& K% P' t" B4 y        return object;
    ( k" V7 s; a+ m, ~6 Y, q" B' z! v- d    }. |3 G3 k; {, b) P' \& Y6 V

    0 c. k1 [- h+ E: l& A    @Override, ]- V1 Z3 W" U" x" \
        public int getElementCount() {
    0 K$ r) P3 Y/ o$ ^+ d# e        return elementCount;' _) A- x$ f' b1 v. s- Y2 ^
        }' u/ _6 a2 j+ E2 ~  f2 H

    5 `1 |* L; F$ d9 ?3 H; l2 ]1 p    @Override
    2 D: B: e! u6 ?  V( ~  a    public Object getFront() {
    & X! H7 {  z% J        if (elementCount == 0) {/ S6 o2 H# `! `: s6 f
                System.out.print("队头无元素");
    , ?3 l/ Y) Y. }( {  A- p1 e1 Q. @7 p1 R            return null;
    : ?+ k: K/ M- p' Q8 r4 }. \% |4 @; v        }) G& i7 L. }- \) o; R0 F
            return element[front];- v8 G! `/ d. d+ }8 S
        }
    0 c0 N2 \, g' D
    1 x2 D  ^1 Z4 q3 V    @Override
    / r/ }$ V5 J  ~' Z9 S    public Object getRear() {0 H5 W+ A( n  w- b6 t
            if (elementCount == 0) {
    ) j6 j9 f0 w2 P: d6 h- a- L            System.out.print("队尾无元素");* J# V! m" a( c" `
                return null;
    4 d& D2 l2 l! h$ p7 O8 n        }
    4 ~* n" N7 y  R        return element[rear];
    . n3 a( t' K7 x0 I7 z1 _# _    }
    / d( K( D* Y% a7 f8 c. W0 Y! `2 _% n4 K, m7 p7 h
        @Override
    " |+ R1 l) n4 B5 R1 n$ D3 @/ o    public void traverse() {% v$ [, ?# R1 d3 i' e
            if (elementCount == 0) {
    1 J8 W; E# m: a7 `! ?- _. @            return;
    9 _4 ]7 q( o# ]6 }9 K' z. ~7 f; _2 [        }
      u8 x1 q3 o' a* |* @& c% l        for (int i = front; i <= rear; i++) {
    - {# O4 G) H8 ~* ?5 q8 T6 V( }            System.out.print(element + ",");/ A$ ^/ y* s5 x6 ]+ N. e7 G
            }
    ) x6 j5 Q: F# u& c1 Q0 y        System.out.println();
    " R  r4 Q4 \- y( q    }
    ) @' L% I4 Q$ w. m}' r. V; T4 F" N6 c0 j$ s! J
    # x0 j) w5 D# T" t* o

    # K/ o  x; E( o9 S4 U1 ]* k0 s- I3、队列的测试+ o  {, ?' i3 J3 w5 n
    public class QueueTest {
    : v. [* y4 b" M7 Q0 `; I    public static void main(String[] args) {
    ( f) f4 T& g3 h4 h        Queue queue = new QueueImpl();
    4 U8 L* g% V8 _( w1 h' e! `, s1 e( U: ^
            //获取队列大小% q( R5 Y8 R5 v( N0 e1 v
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    4 Z# V; Y+ ]2 x! y7 U) i& }2 e+ [6 _3 w/ y& ~9 b1 G" `* V, F5 m
            //第一次入队列:压入1-158 m+ [9 E3 w9 g2 |& h+ `) |/ ~
            for (int i = 0; i < 16; i++) {) y: j& w3 T( ?; q/ [
                queue.push(i);
    7 {9 F& U- A& ^1 \4 t        }$ j, x+ e7 s1 M$ Z" Z1 f- a
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());' h8 m+ p* U/ K. Q9 E
            queue.traverse();
    6 Z: Z, \# H6 ^1 {; Q8 S        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());& D" H$ i2 Y3 K+ K

    7 A3 F0 m  }7 n6 `' e' O; X        //第一次出队:取出0-156 U& d/ q+ x: m9 Y) c( A, ~
            for (int i = 0; i < 16; i++) {" q6 n( `9 x/ r- W
                queue.pull();
    $ a1 o0 L& F" o  `! N        }
    ; L) Y) R* q3 x9 x+ l* [! q        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    1 P" i: w) K5 j+ H$ c- x2 }        queue.traverse();5 P) y2 k$ }' \; p. @- c( T6 Y- p
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());* ~" j) m, C$ V# m, t

    " \5 T4 P! N' X7 R2 [$ x* \/ V* w5 w3 g" m0 B3 V
            //第二次入队列:压入16,31
    , X9 Y) R/ K& N' p' d: a        for (int i = 16; i < 32; i++) {
    3 l9 e# ^/ U$ L, s            queue.push(i);( T+ o% T' |/ I& Z
            }# F$ L# j' `4 F! E3 I
            System.out.println("第二次入队后元素个数为:" + queue.getElementCount());7 D( `1 _* K# _+ o' K
            queue.traverse();: y  f3 G! F) Y8 V+ y9 W* ?1 M% A
    ' w6 H! _6 {9 E8 y( }

    % I/ o: f6 O% y4 l        //第二次出队:取出16-311 x$ u# K8 B4 p1 Q. f3 C
            for (int i = 0; i < 16; i++) {
    & q$ H& \# c( e1 M/ j- t            queue.pull();$ I/ s  v$ f  M) I# p
            }
    ! p! b+ T3 h$ K( j" a3 W        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    1 |( e3 R6 E# ^3 q        queue.traverse();
    . S9 e6 Y8 L4 v5 v" |" L- r9 A) {* C5 A0 h% ~$ b+ d
            //空队列出队报错! T0 d8 z! n0 c1 F- f5 H# Y: H' L7 B
            queue.pull();
    5 F# Y( ~% b( u4 w
    . j) \( n" B% g3 X7 P2 q, f- @    }3 N: N9 T. s. c* g2 D+ q
    }7 q$ Y, Z- h* O  a8 \( n2 Q
    8 z2 u- e% q9 L% h7 U, }+ J  _
    2 \% h5 \* P- Q+ w, w7 T

    & c+ k# P0 v2 V/ Q' k9 R4 x, T8 @2 {: O0 S. |
    7 U: [4 V* E, w! ?  ?! L
    - a/ n* S6 W" D2 e$ t
    ' p: e$ u+ U4 s* H

    / j) \% ~5 A- `' P1 x% p- j5 J
    7 m( G' ], h5 E+ R* N
    0 M. o" v5 g. L* E- X8 L+ C+ ?  D8 o! \- }+ \, H" o! I3 `2 G* [
    + N: o4 t5 R& Q
    % }$ H1 ]. ]5 [! G" J/ s& y7 c
    ! ~4 ^4 s4 M% ]

    - f& y3 t* V) w( S% t5 U9 x————————————————
    # y9 u+ Q/ `. I0 O版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    % q* W) Q0 z1 z# `原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    ( b# e; Z8 c! L% V5 C- F
    ' \8 l: o0 R; }; r/ Q' ^/ t' W- C+ X2 X
    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-6-14 05:17 , Processed in 0.424445 second(s), 54 queries .

    回顶部