QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1775|回复: 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
    * B% w& c* w3 a
    数据结构——栈(Stack)与队列(Queue)的手写实例
    * r! o/ Q6 y: d1 ~3 [8 e% a' l4 @$ g) o% M
    [color=rgba(0, 0, 0, 0.74902)]文章目录
      8 ~* |, b% Z) m3 q$ t7 G
      • 一、 栈与队列的定义
      • 二、 用数组实现栈
        " q) E& s# l& ?; Z
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试8 ?% R2 D0 Y. w
      • 三、 用数组实现队列" B* |: u- o# W$ E5 p
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          % x7 Q9 w/ p! f

    2 I/ x' x$ D3 ~2 T4 S1 b/ S
      J2 T4 Q+ g$ V/ j" ~" B7 ^; h一、 栈与队列的定义
    * e$ q. U. C$ O4 c; P$ w; V栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。! L/ |9 e# S) {( E9 w" V
    1.png - W; Q! l+ K/ l. v( P* m
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。& |% `, l$ s; \% l& f3 E, ]6 b
    2.png
    9 p6 e) k5 `' y7 m3 r0 n5 Y- k' _$ ~' q

    0 p5 Z6 I5 c/ v$ v' Y; D二、 用数组实现栈1、栈的接口定义
    0 r, m3 V# N, t$ i4 S8 l( n/**& o2 a7 c5 b" L. w/ X
    * 定义栈的接口+ W1 W5 p& M! S* a( u0 [  {( _
    *
    . V. T+ H0 z1 k' v$ S$ s% a+ K* D * @Author zhuhuix
    ; y/ l6 [. s$ G, [( |( F * @date 2020-05-01( e6 V- e' f: s$ m7 L8 r" Z* ^% D
    */
    ( T# O. e9 ^# M2 s; a& vpublic interface Stack {
    $ h9 L" e5 M( u( L, {% `    /**6 D* Y* |8 d! q: G; ^
         * 入栈% g8 v3 q. d2 q5 f2 R3 X
         * @param object 入栈元素
    7 `+ x/ e2 w$ Q. o     */
    ! }( W+ H0 s, M) Y# m& v* ^    void push(Object object);
    $ m+ J$ N1 ]7 x8 p3 ]4 g% Z3 K
    1 K1 f9 p3 s  _+ z! K    /**0 J7 I5 _9 L) w  Z* O, S9 M& H2 c! A
         * 出栈; {1 ?0 d3 X' q; p( J, r
         * @return 出栈元素
    ! y4 C' t" K) s3 x* h& o, n) _     */
    - t$ Q& |( e" S6 O; Q- A' E' p    Object pop();
      k( l! _8 U+ T  s
    1 A. q1 l+ c7 l; f: G    /**' {* O1 u/ ]& w3 ^
         *  获取元素个数" d; u2 N3 X; ?' @
         * @return 元素个数- R1 @, w" h: k  q! Y- v1 A
         */( i) p* e: E( b/ [
        int getElementCount();
    * h/ E0 W/ X- _3 H$ J7 ~2 J" f1 N4 T/ A4 B: U2 g( |2 a
        /**
    6 K) E5 u" q* W; [  m     * 遍历栈的元素
    # C3 `4 c/ r9 X: y4 l     */
    4 j2 B( Q. J, Z4 C! e    void traverse();
    ' R1 W; R( \7 f: }' j1 l4 h: ~9 U$ ~
    }
    ; i1 r4 G; c) E, x' W' R1 q4 N2、栈的接口实现5 P" _4 v! Z$ T/ E: l# E  M% d7 J; r
    /**% b. B1 g* P# T
    * 栈的接口实现: z! f8 {3 f, `" G( ^9 J
    *
    . C# J5 f! e- z/ T! V/ o * @author zhuhuix1 G2 U  A$ p2 v
    * @date 2020-05-01
    . E( c* ]) h) E! k' B+ Z */
    % p) v3 X3 u* d' H" @public class StackImpl implements Stack {5 a! G! e  d: b9 L
           
    - S( l5 B3 D" W6 ^; V  l    protected Object[] element;( K& i  v& w4 ~, }! ]% w' [

    9 }- @( r1 b6 Y% a2 {    protected int elementCount;2 d) d/ `) l7 B! p6 W! }/ y

    - K# {+ |/ e" v* Q$ ?/ h    private int defaultSize = 16;1 j* K, e6 j5 L& |

    ; S4 J5 M3 A9 i9 ^3 c1 I    private int maxSize;/ ^& ~" f0 t0 |* q
    5 g* t+ o/ t6 t/ w9 t* W0 T5 n
        StackImpl() {# R  ^  P  ]0 H4 A" Z6 M
            element = new Object[defaultSize];' a! |6 ~5 A2 q% h! i# c" d% [
            maxSize = defaultSize;
    : C) T  |8 q% {& F9 u) N& \    }9 v" _6 r5 \& W3 M4 j, r1 ?
    : \1 u( D/ K1 v7 |! o9 Y+ F  r& Z
        StackImpl(int size) {  Z4 h0 C2 C$ a+ t* d# ^5 S- e; e
            element = new Object[size];6 P* [! K% z+ A) P9 _% |
            maxSize = size;; G$ ?: b; n. U! e8 c# Z; Q, O3 B1 j
        }
    3 e; I" ^, n9 u, n' {6 r( _
    ( W- V$ w( P: I5 h7 ^8 O    @Override
    , A6 S, e: g& A2 A' }& u/ ]4 h1 i    public void push(Object object) {
    / g, S, \+ r/ J4 g        //如果元素个数已经达到数组的最大个数,则进行扩容$ z, _) z7 q8 \1 S2 W
            if (elementCount == maxSize) {% }# _& C8 C# u* r! k- P( m
                element = Arrays.copyOf(element, elementCount + defaultSize);2 P0 [, \$ M! Y4 I
            }, k6 T! n; W; S' _5 Z( r+ c
            element[elementCount++] = object;5 J, |2 Z% d& z

    , y" k" q0 n4 E0 |6 l! P    }
    & w  ~9 t" h0 [$ R' @% B. h        // 本代码未实现数组的自动缩小,具体方法可参考JDK- n  {, G, F! A  l2 Z+ |
        @Override
    ) ]# m5 ]' B6 i+ `$ z/ ~) {' v    public Object pop() {: b/ y5 ^1 C. l7 y5 x! ?
            if (elementCount == 0) {$ d4 C: f  x6 A% p5 b* \5 Y9 Q
                throw new ArrayIndexOutOfBoundsException("栈中无元素");+ @( @# j) g* F/ T" V8 E& x
            }9 H4 y/ [8 d+ L. ?
            Object object = element[--elementCount];
    3 }3 D- V0 M6 n9 z( U& V% ~        element[elementCount] = null;
    ) O7 e9 _$ O# ?; o* p& E        return object;
    / J. T5 w' z0 D    }2 F2 S1 c4 e/ A( S

    ' F+ f) w( Q7 Z% C5 j    @Override! p: G% K, ^0 R1 E9 I6 ^* N$ S
        public int getElementCount() {( {7 L8 C8 n! |. g
            return elementCount;
    # K, d4 l  i" q+ V8 J& U8 q# t  g    }$ {8 p2 [' u: x  u" ]& K& q

    / k% D* K5 w1 v/ o4 {    @Override; n  N- ^6 Q" g
        public void traverse() {
    9 M3 E2 C! f3 f5 T9 y- A        for (int i = 0; i < elementCount; i++) {
    2 [& e; _0 a3 Q' n            System.out.print(element + ",");9 Q3 |& q* g2 @) Z: f0 p7 Z1 ?
            }: ^5 l6 E6 P1 U9 C; |
            System.out.println();& d2 Y" l8 J' i1 V, A$ r# V, H
        }7 v# t6 s) _4 g) l* V
    }
    5 i/ B6 Y2 m  k" d3 V" z2 }, T3、栈的测试* L2 B' _5 H, A# z! c
    public class StackTest {- |1 ]; F9 a7 u5 f$ L) }! F
        public static void main(String[] args) {+ ^# F$ Y, n& K7 G/ e+ q$ E6 N
            Stack stack = new StackImpl();
    - e9 n/ U, O, p3 {# Q  j4 k$ t5 @7 G  x1 r- u- V
            //第一次入栈:压入1-153 X& t" J0 u3 o
            for (int i = 0; i < 16; i++) {3 C# R% O% G& ^8 ^
                stack.push(i);
    & C1 o' ]& u  S7 j6 L' F# i        }' e7 \- G- H% {0 j
            System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    $ t5 w5 U& f% o        stack.traverse();
    ) r$ p5 _! Y+ t& K, C5 W4 a" `$ s8 w* K% b% D% e& H
            //第二次入栈:压入16-31$ b' _/ q4 p; N6 g0 W
            for (int i = 16; i < 32; i++) {! {  z' b/ W: A" \
                stack.push(i);
    ; o$ p: \9 ~$ Z. f" o        }& o! `9 L" T& B8 P" n
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());! z3 H  `% o. [) z
            stack.traverse();4 P" h, m$ V& @0 U
    % E  o2 e4 b9 |4 K( p5 k
            //第一次出栈:取出31-16+ x7 H5 d3 P1 U7 Z' O6 z
            for (int i = 0; i < 16; i++) {
    ) U8 o$ _% M9 U9 M* m& W            stack.pop();: ]/ q, b! y  |7 O7 H
            }, z7 ^" O! I9 @7 y4 Z0 T
            System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    ; Z! o0 N2 n9 K- _9 `8 b9 q4 R7 E        stack.traverse();& N3 }3 y( O' A! C  a% Z7 z
    - G7 ^* ]# Z4 }1 v  C9 O
            //第二次出栈:取出15-0
    + w) G% F5 P4 z4 N9 Z7 y" h        for (int i = 0; i < 16; i++) {7 V& O, o( t$ O; t
                stack.pop();
    , e/ e" v; r/ j, k# ?0 T; M        }
    * n8 }( y$ x/ Q) q& x& R2 M        System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    8 U  v* ^6 L2 K1 b        stack.traverse();  x# A% ?! A/ z

    2 O/ n& V7 v4 P5 U' k0 ]  W        //栈中无元素,出栈报错+ s+ i) q- G* E1 {$ ]
            stack.pop();6 \# q: s4 A; U: C  o, k

    / f2 X6 w9 _7 m' w    }
    $ u6 Y" X3 u) s9 u# B7 J' w}1 a! I( I$ w3 N$ N* U
    3.png
    - G6 J. B. R% H1 ~4 e3 Q' J9 M, q  z6 H5 F! ~
    ; C% o" J  Q8 y- t7 a  R

    - b" l. D3 W& F* Q8 f% u+ L三、 用数组实现队列1、队列的接口定义: O1 b+ [. l( Z/ u+ {6 k
    /**
    ) ?  u' T& i# _: r/ k- t( Q. m( C * 定义队列的接口
    6 ?! ]- d7 H+ I1 F- Y, O- ?: v6 } ** R* G; t/ c6 p* h5 U. J( j) S# o
    * @author zhuhuix
    6 F* |2 V/ _6 ?( j6 {; {7 ^ * @date 2020-05-01
    5 _. f; I0 z! M" ~9 R( P* ] */
    1 V) ]  S& q3 q) b) P. \public interface Queue {
    / f9 K# B9 C2 I. C
    $ K" J- d$ m$ x7 s0 d2 w" R# l    /**
    : M& Z" m$ [9 M     * 获取队列大小3 ~0 r$ B( B% W2 Q, Y) D" x
         * @return 队列大小( w4 C  @' K9 t+ u, D, y  d0 k3 G
         */
      l" M! x/ S: `* s. A, Q    int getMaxSize();' j3 L) b6 b/ o7 g: x# C" |- c7 `

    8 W7 K1 n) S. @5 u4 L2 A    /**# Y# T% s+ r/ R
         * 入队
    . i7 h" T( s+ U5 W) s9 o1 w" @     * @param object 入队元素0 w9 q; V1 b) L0 j3 x" S! {0 D! h( }
         */
    , c0 r$ |4 j" n2 V& _( C6 r6 \    void push(Object object);. ~6 G+ U# R( p# \* V

    / |( X1 W* t, u8 W    /**
    7 n3 G2 n+ @# _) z     * 出队
    # x& ?* f( p7 ?$ t) |$ ]     * @return 出栈元素
    / ^+ \1 J) ~' }     */
    / {" L* I' y  d/ h' Q$ c6 Y. @    Object pull();
    - g" s) c/ m& c; x1 x/ f# q" t+ t; t; S2 ]" R# @
        /**
    + h7 f+ A) ^8 r     *  获取元素个数7 c% {+ j, q; ]  H/ Q3 X% Y
         * @return 元素个数& g( X" V4 w( P, P9 `3 m& B+ Q
         */1 H; r8 B* x$ ]( D; z$ X5 l* E, \
        int getElementCount();7 T9 l) k& w+ M% r7 Z( Z1 g' k+ T, x
    9 B+ ^6 Z$ U$ k8 D2 R
        /**
    0 R7 l. N9 V( Q* g; {/ [% T     *  获取队头元素
    ! o9 q+ J0 j' x7 G4 ^5 l; {# k     * @return 队头元素
    ' f/ C4 y1 Z, s+ b' V     */
    & P: M4 N& ?/ l' _7 |& k; l    Object getFront();9 ^5 \; r. R/ A* d$ w$ v$ g
    ) c# t' D9 M8 N$ \' E; }5 D
        /**
    2 U; \- S1 L6 o( a     *  获取队尾元素* a% ~+ Y( a% b) F
         * @return 队尾元素/ P9 ^4 h5 U: ?% E; p8 c5 j
         */5 B: M* T& \) o1 v5 p0 \/ i1 z. a
        Object getRear();4 \: ]  Y% Q6 D3 ^4 g. b# H

    0 c* l* ^9 l7 Q6 F    /**
    - g8 X* A$ U  `1 p' T     * 遍历队列的元素
    : s( S! d: r1 |2 z     */2 o2 L0 g1 U! {& Z: f
        void traverse();0 |& P6 i9 r" B+ Z7 L
    }9 \  B/ ~  n0 M) R
    2、队列的接口实现/ ~* s1 w2 ^4 e/ {5 H( k
    /**
    ; q9 e; a- D9 ~( i5 u( j) r * 队列的接口实现
    % }2 B2 b. Y5 [1 Z" f6 J4 [5 g *0 F' h3 b& X" ~
    * @author zhuhuix* l, H* A$ h& A. u* _9 V
    * @date 2020-05-01
    , y, a; _: ?3 B( ^' _) i */& ?7 G6 W4 i0 o% Q$ `
    public class QueueImpl implements Queue {7 ]! c1 y6 b2 Q, I

    5 [, S. t# G' g$ S  l. B  T" S    protected Object[] element;
    ; ~* ]3 V5 i4 N* I2 o. i( J, {4 `1 T- t9 ^) d
        protected int elementCount;
    + X4 x; \9 x* f3 U3 X7 l+ V: y/ Z/ K. v# z! E9 `. M' u6 {" S1 M( M
        //队头
    - D- m$ Q+ {- T6 D& D. K    private int front;  w# U2 _  l& W' q+ K2 @2 ~; @- i  _
    6 M2 ?  L% ?& j1 w- s
        //队尾( b, q  d7 f; v6 l' \3 H9 ?
        private int rear;9 A6 j) H. n" s; y5 @% e! ^: B
    + k: n; R6 m( e# n
        private int defaultSize = 16;. F8 f( ?& p" M/ H" a
    9 O7 p( i6 m/ x1 q% v1 @
        private int maxSize;/ i4 Y, @, q$ X4 o. y" v

    " i* o6 u2 V4 r    QueueImpl() {  Z, w4 ]2 X: F  j) Q' U0 J4 V
            element = new Object[defaultSize];
    ( j5 b+ ]" Q: {; Y1 q        maxSize = defaultSize;, C& D6 r) s6 Y$ P) @( i
            front = 0;
    ( B; O& Y) Z+ `) I& ^- b! M        rear = -1;5 Q, u- X5 F4 u( l. K5 a. i: V
        }7 @, ^+ |4 ]: z& _* X
    / C' e" R4 B% @, R* @
        QueueImpl(int size) {# y3 {/ s$ C. b6 M
            element = new Object[size];
    ! w* D6 K$ `* a1 e        maxSize = size;
    * F# \. t7 y9 {9 ?. U4 |        front = 0;7 I/ d8 f& ]- k  I, k5 A+ r
            rear = -1;4 u6 L" Y/ p. z: L+ v& C
        }
    " a% E# x0 O( H! _
    ( ^8 A4 C& r8 G    @Override
    , M$ a. j' }4 ?) K  `& \2 Q8 G    public int getMaxSize() {
    * R$ Z& Q/ u2 E. S" V) Y+ q8 X7 P        return maxSize;7 ~: l0 ~1 S# Z
        }
    8 C) L  y8 y! G
    ! c: o. a' Z" @" ]    @Override4 J- I0 ^2 u/ B$ q( p( d5 `
        public void push(Object object) {
    4 V$ ~+ F" R$ q        //如果元素个数已经达到数组的最大个数,则进行扩容
    & O0 |7 i4 A' U3 d2 a        if (elementCount == maxSize) {
    + v$ Q6 }. U* @7 x3 r            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");: ^2 |0 S" G0 f3 K  S3 @% D& O
            }
    " L. c% d8 l: }2 T5 f        element[++rear] = object;
    : O, D3 K# J6 A. R8 s        if (rear == element.length) {
    , \- j0 s  X4 A) s7 _3 O: i            rear = -1;! x( |3 s' D' y/ L( P. S
            }
    - v. K; z  E: K. \" H        elementCount++;
    . X2 G3 s$ s% _$ `( M9 x! I    }
    % \, y* \8 [6 q
    % }9 B( F, Q) {8 Y' j0 V    @Override
    ' P) s3 Y% z; {( ?8 S6 d4 L6 E: {; p    public Object pull() {
    : L8 r5 w8 v# h1 c- }6 M3 _% m        if (elementCount == 0) {
    8 _- C! P) Y& `$ ?# t3 }4 I5 M            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    5 r/ Z0 P1 ?6 ]) i  b8 J        }
    0 j/ m1 x; w/ h$ ]! H4 o+ B; W        Object object = element[front];
    9 t* ]8 t$ B5 N9 b        element[front] = null;
    2 S2 k; d3 y" ]6 j, ^4 w  D4 a$ T        front++;
    9 t4 h+ S$ D/ D) ^% H+ D  v        elementCount--;
    ' `  N8 N  j7 r, e2 E: P+ S        //队列清空,队头队尾恢复初始值% S9 G. U; _* i/ g% z# y6 {4 q8 r
            if (elementCount == 0) {% B% P4 Z5 [( u- ~4 L. ^. j9 M
                front = 0;
    6 _( X! f8 k  W: ~            rear = -1;+ ~8 [! O$ l2 W
            }
    ! Y8 F* B  h/ c& m3 V3 x: l2 q        return object;8 S: h& b7 q( A: a  ~
        }
    " D* H+ O  e8 T- @9 C- N( d$ m% r# j) J0 [  K3 p3 P1 C; _: N
        @Override
    ! _7 z0 L: h# Y; r" N' ]3 |: k) a4 i    public int getElementCount() {
    ! L; q9 `4 I$ r- h+ q$ _2 |        return elementCount;9 ?, Y! A# s- ]4 u$ H+ s
        }
    , v% n3 j" W% w) K8 W) A- U* g! s1 W% p& Q) ^, }
        @Override
    , W" }. k* t! C* V  _    public Object getFront() {- r0 O# F+ ?7 d+ W! \4 e9 b, \; l
            if (elementCount == 0) {
    ' }: Y1 F  }( o' s            System.out.print("队头无元素");1 ]& \" c: Q7 j* Q8 v. q, x' a7 j
                return null;
    + x. C0 I0 Y$ [        }
    ) Q. z: b: t! K6 t, E# [/ {0 m        return element[front];
    7 D2 Z% |( r, }2 p    }% y5 w7 f. A+ i9 r8 |

    * \0 A, }) H3 ?5 i    @Override
    " R) \0 o' v& q* t- ^. @    public Object getRear() {
    1 H0 ~( ?: V; F; ^2 V( _6 J        if (elementCount == 0) {4 X& f6 A% G' l
                System.out.print("队尾无元素");3 G% }. Q& L! Y4 W+ T; j+ D
                return null;
    . y" K. b4 A% }. _2 l/ e. B        }% C7 L* H0 r, ~/ F& @
            return element[rear];0 b) f+ U3 ]* a( o. r. N* x
        }1 }% i; @( e& C2 G8 F8 D* r

    2 M2 d! L/ A7 |0 K5 P9 Z    @Override! m9 K9 E8 Q7 p: t# C
        public void traverse() {: `$ `: L* Z1 g# Z4 J$ [) K
            if (elementCount == 0) {
    % i: T1 C$ y9 B6 t8 e            return;
    9 e  W' |6 V5 V4 L        }4 ?+ w% a% g. H& h" o/ R
            for (int i = front; i <= rear; i++) {
    ; Q: [! t/ f' F. S5 N            System.out.print(element + ",");8 N& |" K& J0 ^( O& B( ~$ z4 `1 |2 x
            }* a7 C( w3 H$ _% S9 D' {
            System.out.println();
    , a( G) d" v: r( V    }
    , H3 u: G' Q" a5 I9 Y}" L- j" w, S. }, o; `# C5 {

    % {8 j6 D. S0 b8 l2 w* M, W) {! W4 \" k3 K$ }
    3、队列的测试
    " I+ S2 n! i/ G( i, T4 f' O% \5 ?public class QueueTest {
    " t) _' ~- d6 z8 ^6 W4 r$ V/ M; V8 H    public static void main(String[] args) {
    " ^) Z4 x0 U7 B: q: s' B1 K( k7 n        Queue queue = new QueueImpl();
      X" r7 C2 c% W" W6 K$ ~. P# C: s/ a/ I  m4 E
            //获取队列大小, U. ~$ F4 @; ?+ g) y
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
      K% p/ K& q4 l
    2 u1 x- p. T; D, }        //第一次入队列:压入1-154 f7 f3 m6 ?/ S; ?7 S* G& @
            for (int i = 0; i < 16; i++) {
    + K: s5 t2 W+ \# k  c4 }            queue.push(i);7 B8 I5 p' J4 M& r- T$ G
            }
    1 i$ A( ?1 V. X9 }# i        System.out.println("第一次入队后元素个数为:" + queue.getElementCount());: k3 G# H4 E2 |6 D4 {$ B
            queue.traverse();+ @' Q/ v5 W2 \7 ]) K
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ) E( {) U2 Q$ ]  ]4 b+ \5 M
      C6 G6 A5 U9 [6 g! d( z# o' T        //第一次出队:取出0-15' D9 l- v. D0 |- r
            for (int i = 0; i < 16; i++) {4 J& ^, R+ L) [' s7 U. D
                queue.pull();+ q- j( o9 `8 h4 N
            }- ?! ^' Z/ A1 Q# P, W  B
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());
    9 s( m. T$ b4 q# t# r        queue.traverse();2 n/ u9 K' J9 Z# M2 o/ S4 M
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());) @* B& v  e$ p7 {; y
    . {  Y. N9 x9 ^  K

    / N  z/ b, x/ |$ Y) N) E0 b        //第二次入队列:压入16,31& D% v5 f" B8 L  G/ G
            for (int i = 16; i < 32; i++) {
    ! z( u1 w' U7 E! s. z$ ?            queue.push(i);
    , O; l' A$ H1 K2 k% \, Z        }
    # t5 c9 F' P+ G6 H! z" Y        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    2 H' T! W+ W5 _, f8 [        queue.traverse();
    % Q5 `( I/ M5 l' Y* K
    " X+ T! _, n- n8 @
    0 s4 i9 G/ e' o5 V& V9 o$ Z        //第二次出队:取出16-31- t0 p8 r9 Q% o9 w# ^* m, k$ m
            for (int i = 0; i < 16; i++) {
    ; e) K2 |/ i+ ^3 U/ k            queue.pull();! ]$ A; Z7 M+ p3 o' d
            }5 U( l# |1 G2 _* k: u
            System.out.println("第二次出队后元素个数为:" + queue.getElementCount());1 ?) l4 C+ ^8 i# S, |( o0 z
            queue.traverse();
    ( j; L- l, H9 W3 m) x3 d" Q; I( p; m, Q  z- X( n8 Y
            //空队列出队报错
    / H3 b+ O$ Y- I+ J3 z) w        queue.pull();( O& z" n' o  ?

    / N1 o; j+ r; P& s' v    }/ n/ n7 l0 N2 c
    }( b* I- d7 n5 U7 j# m4 B

    - q3 d% u8 h( Y
    % ?* j. k8 J5 k7 \# W, C, z2 |
    * X9 C  U% C# T% o$ V' k
    3 O# a& v6 g9 x
    ( ?6 D& O. F  L" i
    8 q5 v5 f! `  j" n% @+ f3 p9 A4 z9 s! \0 u; U/ I3 T7 _

    ! j; c- r  \" S7 g, Q. N9 \" T6 s
    % V! E/ E7 m) b: }2 ?# w( H- t1 M& K3 l+ C7 _
    6 L  g8 E# A. G2 i6 |

    9 K8 ]' ^8 N: f
    : l1 w  n7 U1 A0 h8 B& H$ f) b! y8 r& E5 F1 f9 ?
    4 J5 n' R5 ]/ F) L4 I
    ————————————————* S, b% d( ?- l7 f5 ?) ^
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。4 f2 _9 [, s. ^4 m
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    & S9 n' D1 V9 @8 l5 a5 X* d8 A( a: T0 m( ~

    : i& Z4 `- I, r# _% N4 `7 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-9-10 07:42 , Processed in 0.881273 second(s), 54 queries .

    回顶部