QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1709|回复: 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
    3 X) Y  `8 v' |% ~7 o4 r  A
    数据结构——栈(Stack)与队列(Queue)的手写实例3 z  _/ `. _4 w8 o4 N# r( g+ w

    + j) L9 h( V. A[color=rgba(0, 0, 0, 0.74902)]文章目录

      % @1 {- Z6 X2 Z3 R* P
      • 一、 栈与队列的定义
      • 二、 用数组实现栈; z5 v0 K! S/ e3 S. r' S
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试
          # Z! F" X0 {  [+ s9 G
      • 三、 用数组实现队列
        7 O1 M# O' i* x) S% d9 v# a& j, |* j4 I
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试, i$ k$ G: q# g' l
    7 f! J3 T. [9 m* E5 c- ^

    2 \' K7 F& n4 [- _' z/ X( r) j. {0 B一、 栈与队列的定义
    $ e" G( l1 b# u+ _' G. |: v栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    # h: y( s+ E% r( r/ f/ `4 O 1.png ! N9 K+ j8 V: [
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。
    1 K  \2 W- q- r, h 2.png ; F9 \: S& t$ b+ P
    ! [& W, y/ u9 y/ K" S: _# ?# X
    . T0 b8 X- f$ L" F, j3 c7 A2 E3 r
    二、 用数组实现栈1、栈的接口定义  |% I0 U# @6 L! K; A
    /**- r8 i9 M: k$ y
    * 定义栈的接口
    / U& q4 v4 u! }: U0 m *
    ( L  y. ?9 I  S: G9 S * @Author zhuhuix
    : e6 Q# V9 i$ c. u, S8 [8 f * @date 2020-05-01/ |! s! h4 C) \2 @! a
    */
    0 m3 h/ w& w( I* E7 apublic interface Stack {
    ! j8 v. Y$ a" B: X) T( h1 k    /**
    ; S: k  t- j0 i/ e3 ~0 v( ^     * 入栈$ A) I7 {! K: n$ R# }
         * @param object 入栈元素: c9 ]! h% `. M; ~; b0 _- {2 [6 ^
         */
    9 N) P% V( L) l9 V9 n    void push(Object object);2 y" E- U8 T! p, @( x4 T

    1 r' \( E& h1 M) L    /**1 j9 h' d% ?- Q" s2 j4 I5 k
         * 出栈
    - _) T+ n; z3 G     * @return 出栈元素+ p/ r- O/ v; r1 ~) ?& ~% c
         */" G, q0 K7 I0 j; K: S8 G& l
        Object pop();  |( Q( u# `8 |

    ) p. z: d* O# }( r9 M    /**1 T. U! D* f$ U  J9 k
         *  获取元素个数
    + }: Z( Z% J# s- w6 e- w     * @return 元素个数0 t9 R' i- ?( l6 Q7 O
         *// R, h6 o. l" A0 s3 g# Z) j5 U
        int getElementCount();. u0 W! A% [# U6 B0 F* {. d

    + W" `( K3 w/ o: z    /**
    " A! e8 v& @6 x     * 遍历栈的元素! D! Q  i, v. f: B5 L6 k
         */: @( y! b2 R, \+ Y$ d3 f
        void traverse();
    ! D% ?0 L$ i7 `# G  Q  f" @
    , R0 z% }/ x& k}4 }% h8 M7 K% G
    2、栈的接口实现
    ' |+ J( ]1 k+ h0 \5 D/**
    ) ?% z" F0 m) q * 栈的接口实现
    ! e8 S# m- Z5 o& U/ Z$ c' C6 h* t */ D- q, K2 r2 m4 p- M1 U' z7 A) Z
    * @author zhuhuix+ G! u6 k9 N& V; \  C. n1 |; E
    * @date 2020-05-01' N% k# B. W: T8 K/ Z7 _
    */& j# S! y) f3 R" G2 |( f
    public class StackImpl implements Stack {* o) ?7 ]/ P4 H2 [' k7 ~
            " r3 z- q; p$ t+ U) T
        protected Object[] element;, G3 P4 I4 X4 `- |/ k2 ^$ T
    9 [( W3 v% h# w# I
        protected int elementCount;7 o& O# A# n: x4 C5 Q5 z

    ' P* g! g' r+ G    private int defaultSize = 16;
    * v' w9 D. Y* n  c
    9 i5 Y3 Q2 R  O    private int maxSize;- U+ y) R7 T3 @2 }( n% X& E
    5 i4 @( x6 Q5 p+ M/ V
        StackImpl() {
    : q7 Y7 a5 g' R6 O  }        element = new Object[defaultSize];
    1 J3 a6 C6 F3 B- i/ [2 s        maxSize = defaultSize;
    8 h; f4 p; M- g: U$ a    }3 d; T, {" K. G- q& L7 P" H
    2 O! X" w/ A! W' W& x/ j9 w
        StackImpl(int size) {
    9 Z7 Q) u8 o/ z& q7 X* v        element = new Object[size];
    8 {  V: s  D$ }! M3 h$ }7 u        maxSize = size;
    ! V+ }: E2 _" S% ?, d: ~: o    }% z6 `9 Z- o$ ]! u9 W
      a  A3 q) k" h
        @Override
    $ U/ N. B$ K& k+ ]& Z    public void push(Object object) {' O* I6 D* Q# X7 l
            //如果元素个数已经达到数组的最大个数,则进行扩容3 b6 H3 ?* z4 P$ [# ?
            if (elementCount == maxSize) {
    % f: c5 m2 M% M* B            element = Arrays.copyOf(element, elementCount + defaultSize);9 @  Y9 `* w. s8 L6 G2 ?$ h
            }
    / y5 K3 A0 ]9 Q$ ?. i        element[elementCount++] = object;
    ; ^% |, Q, h8 Z# T1 }- V; U% S
    & C2 u6 x. I4 M/ \5 `- h5 Z' D    }& ~  A6 B8 d* B' T0 Q+ {
            // 本代码未实现数组的自动缩小,具体方法可参考JDK
    ( l8 i: x4 f3 B    @Override$ }$ j; \1 U7 B& s1 e
        public Object pop() {
    6 b4 V! u3 S" y; i1 |        if (elementCount == 0) {
    + J8 B7 v0 _: ~8 I, r- K- F1 s% o            throw new ArrayIndexOutOfBoundsException("栈中无元素");; n5 f% p5 Y: v" ?. e0 h
            }
    : T1 d8 t% F/ t* b6 n$ `8 }5 u8 }        Object object = element[--elementCount];
    / X# ?' |* I; V) \/ e+ [        element[elementCount] = null;' f* j& c3 ^. l
            return object;
    3 \; `3 L& l% q    }
    4 x/ _6 Y" H7 t. X. u+ ]. |: h$ ^" Q. q% A) V
        @Override3 @& H3 H* v! b2 p5 c
        public int getElementCount() {
    + w) ]. `" Y, Z( {        return elementCount;
    1 E# L4 y" ]2 y& I2 D    }
    ( N, t! J, L4 v, G9 g
    7 n- D& p. D1 r    @Override) s. D, U* Y1 g4 y! x2 j9 N- V* h/ q: B
        public void traverse() {
    0 `7 t; t3 V+ w  {        for (int i = 0; i < elementCount; i++) {1 O' G9 c% W- s3 K" O- g1 }
                System.out.print(element + ",");
    ' O" G) p9 U; ]+ t: p/ C+ ]        }6 E$ g7 V2 l* v. s2 E9 R5 g
            System.out.println();5 m/ B% I: G/ g, Q5 x# e5 j
        }2 _4 h3 b9 C8 M6 S+ c( k  u
    }
    7 S9 k" {% ]) Y: y* \3、栈的测试
    - y3 c: }! [+ m# F, Y" G+ ipublic class StackTest {
    % c7 V% o: B& m2 z" d% O; L    public static void main(String[] args) {7 @5 |8 w5 ^( K0 g! k
            Stack stack = new StackImpl();
    ) N: c8 D8 k# {2 [. m. e3 k; P. ~+ g2 }  l0 g
            //第一次入栈:压入1-157 a3 C% ~; Q3 I) I/ r; t
            for (int i = 0; i < 16; i++) {
    ; P% d- C, H8 b            stack.push(i);' P4 ~! V/ N8 L& G9 k" {# s
            }
    $ b5 y- `1 Y9 N$ r, V( f  R9 I- e  \        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
      V* F, b* t( x$ `        stack.traverse();
    , m4 i) m& K- @9 @. ]$ I3 }7 }. l/ J' _* N" a, s  o
            //第二次入栈:压入16-31+ w' w& @( `, l) W+ }" h- l5 }
            for (int i = 16; i < 32; i++) {6 j; f8 W; H) g* _; x1 G. u3 Q
                stack.push(i);3 u7 u" R5 w7 P' w9 F6 n1 ^
            }, `- E  C$ l- r1 C3 T. }% j
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());
    4 n8 y: a0 A  g2 _        stack.traverse();4 ]9 j% R1 J4 T2 U0 E4 h4 l
    # {; i5 ~- U9 _& J, W
            //第一次出栈:取出31-16% ]$ X% c- c4 I% T& F
            for (int i = 0; i < 16; i++) {
    5 L2 F( D' z- f4 y( K/ Z7 {            stack.pop();2 ]6 U3 q7 d3 c; ^; ]* q
            }
    % l; y7 ]2 o- Q6 O        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());5 A! Z( v9 @3 `! c' N
            stack.traverse();3 e7 B8 {( X' n( ]
    6 V4 c- l# J8 a7 Y9 B9 ]3 g
            //第二次出栈:取出15-05 _4 d, N: I# I6 h, q
            for (int i = 0; i < 16; i++) {) j/ ~; b& }& w
                stack.pop();9 k: t/ ]8 Z0 A$ m+ _$ b
            }7 i7 v+ L  N1 }" b( u" q
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
    1 `" L* {$ r+ k( S+ h$ F        stack.traverse();
      J  I- e4 F( \7 i2 E  u5 f1 s; z, x, d8 l, J4 E
            //栈中无元素,出栈报错
    0 F5 x" }) o3 G- u4 q% h6 r        stack.pop();# F: J# i- C- w

    7 y$ n6 N' y7 [. X    }
      E6 f" X- b: j6 j3 C% M. ?}
    2 J1 ~& z9 `0 P! B: ^- ^$ v3 n# t! G3 D5 m 3.png ' @9 x/ M: r: _' ]$ Z; j

    5 s% F; {- c$ J* X0 ~3 N, c# R6 T' K- y0 i, v

    ; K' w  h/ k3 J  ?5 p三、 用数组实现队列1、队列的接口定义6 H  C! h7 T2 l1 b
    /**
    " V. ~  k0 Q; i4 l5 E0 Y' f * 定义队列的接口7 ^2 d- C. b7 V- o7 _9 }  H
    *
    " ?3 c- T5 C/ [/ v) K4 n& u * @author zhuhuix& `# o& n3 j  o. K  g
    * @date 2020-05-01
    0 O% T; G" q. h$ j  E; Z */  i8 G/ [+ [9 o% X3 q1 H% [( U$ H
    public interface Queue {
    * i2 b$ G+ R! A3 U+ g/ I) ^5 _# x. o% e  Y* {* P" S+ C% L5 m
        /**
    7 M! e5 N! Y$ Y3 F; \     * 获取队列大小4 w' G: G6 X; I3 O
         * @return 队列大小
    6 L2 B/ m/ g2 w' T9 y% @$ f     */
    " w4 Z: A( x4 |6 R    int getMaxSize();" K/ D& r8 h/ O. r3 ~; Y/ V
    # h5 \1 m: q8 w# ^- k- [
        /**) Z3 K6 g3 K. e- u
         * 入队
    # W# ?4 g2 r/ P2 ^3 e( m. ?$ a     * @param object 入队元素# ?7 [7 m' G" `0 j& |( a! n! ^
         */4 l* G2 g1 m$ k( U( P
        void push(Object object);
    ' r* y5 G3 l" r& ~( o
    7 j$ ~" c6 {& j8 w( d    /**8 W& n  F. K, I, I( i8 L- |3 ^
         * 出队
    ; U3 z6 X) _  F) U     * @return 出栈元素1 O( M, d8 [6 o* z6 k, y
         */
    % _2 f: R1 ^4 H: A8 R    Object pull();" G$ E: C7 U. `' Z: ]' N

    7 ~" f. ~9 c. N: E+ C( H2 ~    /**2 c% T3 X( H* ~) V$ |
         *  获取元素个数0 {, m4 J0 O/ V. W& S
         * @return 元素个数$ P# ]) I- R9 ~. y' b2 Y( s/ z1 T
         */( o9 a( ?5 R( T2 c: b# Y7 O
        int getElementCount();
    5 R2 V3 U4 R  t
    8 }( S6 R4 B4 L    /**
    6 t1 C! k  ?$ |* e  Z; j- ~& x     *  获取队头元素
    & E. \2 c7 p( C3 b: }     * @return 队头元素
    - g0 J+ x3 \% k  Z  N# M! R     */: o/ b+ r5 v1 N" s
        Object getFront();
    , v# }4 c/ G! y+ d5 t! ?3 m1 T9 ]8 U: m: @2 ~$ B* p
        /**1 Y( Q8 O! j0 [; M- z& @7 j
         *  获取队尾元素$ W% R' e" v  n8 i
         * @return 队尾元素, t$ b& F+ n$ J: H# Y
         */& |" O& i$ f2 c& D* i# @& z( |/ `; o
        Object getRear();3 o* j5 A, w6 C: Q; T1 d5 \

    * ^, M$ J9 L  ~3 S# j2 E1 b' \    /**
    1 z/ o5 e# Z: }1 a8 h     * 遍历队列的元素, f- ^  d, W( h: z- B  ?* n( e
         */% {7 h% i% d" H7 B
        void traverse();
    ! S! I; a9 k6 [/ a/ g4 @: a}2 y7 J1 e$ t" o. E4 E2 @
    2、队列的接口实现
    - z7 v* d! r+ X( U: Q" a/**
    + S1 }/ B& r7 t- n- F9 ?3 u * 队列的接口实现
    . i$ J) {) H4 x5 |1 p: U *
    * h4 W7 m  |- |; z+ X) j- i5 H * @author zhuhuix
    ; a3 [8 W. F% L8 p7 H1 { * @date 2020-05-01  E+ @* f, K4 F+ N$ |& e
    */7 C* U: S' s" {4 K
    public class QueueImpl implements Queue {
    2 \/ B3 y! h  D+ B' b* I8 @: ?9 u; x3 f8 k5 t
        protected Object[] element;, }. W8 C- t9 h3 `
    5 h1 k* W& @2 E# [6 y
        protected int elementCount;5 ]# T# R% x) |1 b

    - K: I/ E2 Y8 \' r- j- i' A    //队头+ G6 z/ J& D( L3 x" h3 B
        private int front;
    6 d* F9 c8 L: R( _2 l( K
    6 p  ~/ G- ?! M2 ]' j    //队尾3 b( }# Q. @" J: N
        private int rear;
    + S$ ^( J2 h0 o; a2 F% }' k
    % y5 f) R- K' e, T    private int defaultSize = 16;
    * W: H3 A" O) w
    , i0 L  C, s( E. C3 b    private int maxSize;
    . B3 ^  s. Q+ }2 G9 q/ A: H# G' O+ F3 c5 u/ ^2 e0 O! I
        QueueImpl() {
    : r- z) \* J4 L8 i8 W/ H        element = new Object[defaultSize];% I- c' a1 l% j  j6 }$ y2 k* H
            maxSize = defaultSize;
    3 c1 P0 Q$ `' P        front = 0;
    . r5 [" m* i. S& V  _& v+ N! w        rear = -1;: ^! H4 Q, ]# \$ R
        }
    5 C7 `- ^& `$ G! v5 i. h" t; \9 h7 o1 l- J  T$ q( F5 b  T
        QueueImpl(int size) {
    - b/ i+ h( f6 M5 V        element = new Object[size];! f! _% S2 K# S" N( }
            maxSize = size;
    ; s3 C8 v, `+ w2 f$ r# I3 O        front = 0;
    * |4 l+ Z7 o" B" j1 U$ Q! H# _7 j        rear = -1;  c$ {7 m) d8 ^. e5 ^+ |" _  w
        }% |3 x0 _2 q0 V7 N8 R1 Q
    & u* r% C3 v# d* Z6 Q
        @Override
    # O" U( M! P* U    public int getMaxSize() {
    ( e8 D  g0 \4 F; O2 h; C, F9 S        return maxSize;* n3 {6 D* a& |2 m; Z; ?4 Y  L
        }: `/ }- S# n7 \/ ^( M9 F

    ' q4 D' l, E& X: g  S2 x4 S2 Q$ a    @Override
    2 U5 N# N6 @" z5 C    public void push(Object object) {$ H2 B) M4 n8 I8 ?! {0 w) [8 G6 k5 G
            //如果元素个数已经达到数组的最大个数,则进行扩容0 n1 S, p! N3 B7 N3 }
            if (elementCount == maxSize) {
    ! _8 p1 q% s4 I6 a, |, f8 k: g            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");9 q7 F( U' \0 D* ?+ D1 ?8 P( E+ W; h( f
            }
    # k3 b3 p  x+ n1 y        element[++rear] = object;
    3 A$ b: l/ Q% F        if (rear == element.length) {- e2 F. w" y3 c
                rear = -1;
    7 \% }  p& C$ A% ~0 D; j) m# B: o        }8 w( p: L4 c/ Z" ?$ k
            elementCount++;3 V3 S; |8 g  Z! r# u; H. T, l
        }4 v$ w& ]7 h6 I! A; a
    : _* O* W9 x) h( f
        @Override
    5 [2 `+ R* D2 Z. f    public Object pull() {
    8 R) r4 ]# P& b" Y6 \* |        if (elementCount == 0) {
    + l0 p" q. E6 l) \' T6 E            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    ! A% V7 `# n; C        }
    ) D, Q/ d4 h; e: T( p; [        Object object = element[front];4 ~* H0 j3 {1 w' E  R
            element[front] = null;
    " G2 [% r1 A, p* h1 h5 g        front++;. }& y0 H8 L7 p# o3 U. c
            elementCount--;* z. m& A+ ~+ l7 i
            //队列清空,队头队尾恢复初始值# P! }% K/ Z7 c6 X6 W
            if (elementCount == 0) {2 z3 _4 |7 F0 M1 {9 a9 Y$ B8 f7 t
                front = 0;4 F) s/ H% |' j5 }) |1 q
                rear = -1;
    9 q* \2 ]" E9 P& L7 l        }* x5 x& @( t* ~, |& l8 k6 l
            return object;
    , a/ c2 f2 o3 U: E    }
    2 R4 W! Z3 @% ?0 L3 w9 z1 v; n
    ! \1 r2 A4 U, m: X! X0 ]4 E    @Override4 G2 _# h& {9 W0 k9 [. W% Q3 a
        public int getElementCount() {5 {% d/ ]* Z$ B# Z( V
            return elementCount;
    & }5 j' o( y8 ^; }' e+ s    }$ P& V* U& o  M9 C
    8 b1 |9 W  S3 L+ E2 m
        @Override
    1 W' t4 w( J3 Y! J    public Object getFront() {
    1 x" C- C) i+ _% q/ J        if (elementCount == 0) {
    0 e% o' ?1 Q9 C: A            System.out.print("队头无元素");$ H% W! m) ]2 Q( X8 [- M0 R
                return null;
    8 m4 @6 V2 }2 K0 ~: X* a        }1 G5 }, x% i9 f- _
            return element[front];
    ) [: ?0 `* O0 J: {5 r    }6 _+ v# R5 [, @0 b+ y$ B+ B2 u

    9 t/ {+ v, T  T, W    @Override1 W% D0 H. v" c8 m
        public Object getRear() {" h; _5 n- r9 ]5 Z1 G
            if (elementCount == 0) {
    1 c- D9 ^- O& a* U9 l. u8 L+ J            System.out.print("队尾无元素");: p+ v1 K+ N3 K: H/ y8 l2 Z
                return null;( ~) D" M0 f" ?* h  S+ w; Y
            }5 o2 M5 F4 f  `8 m: v
            return element[rear];  o: f6 F, \# a, a1 J
        }
    6 X3 L/ g5 B: {! s
    7 t  I% D# ]* {. u4 {/ r* X    @Override
    ' P0 z. ~: S' i- J5 [8 J& a; G    public void traverse() {% @  L6 z0 P2 R. m  J
            if (elementCount == 0) {
    - X- {1 E1 @4 L& n            return;
    : d) n7 {# H9 Y$ Y# h  I. t        }- v. d( ]" `/ ?
            for (int i = front; i <= rear; i++) {
    5 G  D7 H& ?3 S, J            System.out.print(element + ",");" W3 i0 Q+ z0 U
            }
    ! y1 l6 d! z: A2 B% l% G: B4 @        System.out.println();  x/ L$ j1 \  R' `: Q  g0 u
        }
    9 I2 m& s' g; m}
    8 O, p! [( H1 ?! }: G
    ' w4 \) ]; H  l" M: A  \' m% ?7 U, g6 [! J* W. V+ r
    3、队列的测试
    ( M6 g% ]5 y. O6 u3 dpublic class QueueTest {0 A  {! o8 ^! C, D0 q$ R
        public static void main(String[] args) {
    8 ?' ]" @+ ]& `7 |# t+ ~5 N        Queue queue = new QueueImpl();
    " Q: q$ e6 X, j, K$ n. Z" L
    . Z/ E8 L4 s) v: I, J        //获取队列大小% U3 m# u* Y7 `8 R) t: ]" z
            System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    ' \+ J* A* D( p# J, |. u7 n6 N  a3 l' @5 Z9 F
            //第一次入队列:压入1-15
      T8 `+ F2 a8 K; G; I        for (int i = 0; i < 16; i++) {! R  j- M, F; A" i6 `$ e0 H, ]
                queue.push(i);
    ) O" E, Y  ?# U% W6 X9 L/ H( o        }1 l3 b$ B0 U$ f
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());# x& i3 G- O8 k$ a' L
            queue.traverse();
    / R; v. e4 Y/ ?2 {! Q2 H        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    , P/ \; v  Q# c" ~! w
    4 }& t4 ]# y8 N7 N& r% x6 S        //第一次出队:取出0-15) H6 {. k9 C7 `" l
            for (int i = 0; i < 16; i++) {5 k' V; c2 W4 D* S4 M
                queue.pull();
    ; t: ]3 t. b! X( t7 Y2 g6 D7 J        }8 ~! o% A: }  n& k
            System.out.println("第一次出队后元素个数为:" + queue.getElementCount());: c, j, p. c% L  U# Z8 o1 D2 g* `
            queue.traverse();! ]# p3 p( c! I4 J  ^: d
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    % P' e9 D# B/ \( [: Q' B6 {) V
    3 F* k% B# y2 x1 |) _7 ^1 Y" {% J, \
            //第二次入队列:压入16,31
    6 d6 ?% u4 Q# G. P! }( S        for (int i = 16; i < 32; i++) {
    + P& d, v8 S+ c            queue.push(i);$ w: I0 z6 A( S1 _3 c: v- Z
            }
      H: z( X  M* B+ M  V6 M; y$ J. n4 k        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());. T, o% N0 k" f5 N4 T1 U* J
            queue.traverse();( `. h  ]: H4 S* e

    - z7 j- x7 m: ~2 {0 R" A# C3 l
    / b- k* ?1 L) O6 U! |        //第二次出队:取出16-31
    + p' J- r4 Z: w/ m' W  k1 Q        for (int i = 0; i < 16; i++) {+ t. [2 }7 g: i: u! s9 j" p
                queue.pull();
      h+ H& M1 Y& J8 [        }
    - o% K  y! j& Q0 M3 {        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());
    $ L: j7 D' z+ e& j$ ]        queue.traverse();
    7 I) K" T2 z' K  R% |* N# Y: r
    5 Y8 c: w  J" Q( ]+ X        //空队列出队报错7 c5 R3 j% @) K) n4 O
            queue.pull();" b) w& Y0 P; h
    : }( i: l! T% E% m  y1 V: Q, ~' L
        }
    1 S& W$ J5 F. ]' L}
    + _0 d' `2 C) J7 E& a
    2 w+ r( d8 G0 K/ d6 e& g# N: z/ r3 U2 V9 I3 v9 R

    3 c) d0 _9 R6 ^( K: \
    $ P' `, @6 h. P% S
    6 o( J( d% x. J# v1 y$ j
    0 A6 H" e" O1 k/ V, F0 A1 X) y9 E' x5 b7 X# j# S6 M4 Z( A& e
    4 D* P1 m+ D! _3 S5 _3 z6 z- A3 _

    - }" [7 r0 b( w5 v2 U4 d0 Q' |. v& r6 d, c5 \

    : z0 q7 y; S5 \( d0 S
    : M+ j: _, A& v; b
    0 h4 r& t/ Z( U, l4 K' K, z1 S5 D# e# l/ b

    6 M3 E& r) T0 C* i- w) d! U————————————————
      S. H- s+ B1 v2 [  }版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* z- }% u. `3 h- K- V; f5 j" T& w# Z
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785
    + `5 O0 [: ]) {3 w0 e1 O
    6 W; o2 I  N( T# O. `$ E% _1 c! @
    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-10 06:06 , Processed in 0.421838 second(s), 54 queries .

    回顶部