QQ登录

只需要一步,快速开始

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

    8 ~' K9 {) J# B9 L) e8 e+ u% |数据结构——栈(Stack)与队列(Queue)的手写实例% R9 a% {. y3 S# Z2 y

    : ?- S/ a" l: G/ N% Z8 K# R8 P[color=rgba(0, 0, 0, 0.74902)]文章目录
      " _6 x; N( V6 u% p0 F, G& G
      • 一、 栈与队列的定义
      • 二、 用数组实现栈, C: K/ e' h" C5 h1 M) p2 H: T
        • 1、栈的接口定义
        • 2、栈的接口实现
        • 3、栈的测试! u4 m: Z) U9 ~0 z; b
      • 三、 用数组实现队列# ?8 {4 w' m8 a5 x, o! I5 T
        • 1、队列的接口定义
        • 2、队列的接口实现
        • 3、队列的测试
          $ V( s. g. Z1 r4 B5 G5 Y  I) ?: f

    0 F4 U6 T& ~: {  L" F" O1 U2 N2 T: i  K) U
    一、 栈与队列的定义
    $ f- T. c- _' e8 x# p. ]栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out),最后插入的元素最先出来。
    " m% h; h0 U) q- L1 s; Q; L. y 1.png " w" d2 P4 E& f6 i. i7 ?0 N* T
     队列[Queue]:是一种限定仅在表头进行删除操作,仅在表尾进行插入操作的线性表;即先进先出(FIFO-first in first out):最先插入的元素最先出来。( m& Z8 ^, ?& J" m: _
    2.png
    ! h( W: F& W) G  ?$ n
    + f' g0 Z4 H8 \4 V3 k, N% W+ @8 D( \% u
    0 z" ?/ Q) c1 K- ]6 {+ k二、 用数组实现栈1、栈的接口定义4 D6 _5 Z- e# a3 U: g6 q/ b
    /**$ e9 k" O+ g& n5 }
    * 定义栈的接口2 ]1 @/ O) r7 ~& Y' p
    *
    " T' G4 A' }; ~# O * @Author zhuhuix
      b2 @+ p8 Z# @- z1 Q* k * @date 2020-05-01
    # E  I& R" K5 R; { */7 |7 g6 {! V4 }2 |! j
    public interface Stack {9 t% w( K! T$ s# a4 F% e2 A$ `- f
        /**
    $ {: x5 w- C, z: L3 `- R' r* T     * 入栈6 s. M! w& b+ u4 o$ }
         * @param object 入栈元素
    ; {: [2 }' V2 C) E; F+ m! T     */
    * g: d, M8 X$ ?9 M* |( a' w    void push(Object object);; v# q% p1 }- E. ?; A
      q; i) K: F' C* x8 B
        /**
    + o1 I* ~. b* @; _" O0 X0 F$ b     * 出栈# G* N8 u, l* s) V7 @# J
         * @return 出栈元素
    % y* `6 d  R  ]9 d8 I, \3 h; x     */
    # j% H9 [: x* H6 z) p! o    Object pop();  k" |" j9 }7 [

    ) j9 ]5 k# Y5 T  b; _( w, c    /**
    " o1 I8 |+ n% E0 r' `     *  获取元素个数
    ; u! d: m. G9 _( n     * @return 元素个数7 m2 O' Q$ |+ u% D: s
         */- o, ^1 X# C4 y0 C+ d
        int getElementCount();2 e# ?% o0 _# [, M6 J, C8 n/ q
    - y# I1 p8 x+ c1 T. g8 ~
        /**
    / f8 T( Z, H2 Z& u2 S     * 遍历栈的元素; V$ o/ _/ @& M" m1 G
         */7 I& `) G" [/ t. Q
        void traverse();3 L% k$ }' t' U# O5 l, C% {

    0 m+ A: J; g6 A9 x- G' B9 }}7 ]  p7 u7 h5 Z
    2、栈的接口实现
    . f. R5 _: {* H" z: Q' I! C5 O' }/**
    ! G. ]# F3 c, [' E* m4 E8 |7 _ * 栈的接口实现
    * H3 g$ K8 q" L  k. G, L* W *4 Q4 ^, s& `/ o4 q6 G
    * @author zhuhuix5 N; C) l" G9 v
    * @date 2020-05-01
    ( x, v$ o1 M0 Y9 r7 U */1 h. Y! Z  x  z& m
    public class StackImpl implements Stack {, T5 Q7 x2 K2 U3 Y3 {$ N& o- L
            1 c- d- z, f' C: m/ _+ b
        protected Object[] element;! {4 T, X  l1 ]/ D. X! f

      _! ?; I/ x$ y- A! u7 E    protected int elementCount;8 u# {3 Z7 g  K/ g: T# v+ L
    % J0 W( H! \% w
        private int defaultSize = 16;% J* Q4 {6 Z( ]+ {# o9 C

    * l# \" F% r" c' P9 @* j2 o    private int maxSize;  d7 _2 y  a5 A- C/ K
    & u  E% k& X. u( o
        StackImpl() {
    4 S6 u3 p' h' y        element = new Object[defaultSize];3 h) n: A% q0 Z7 n( f- O! k7 H
            maxSize = defaultSize;. X- o  E( Q$ `1 ~) c5 g
        }
    6 w8 P3 d+ V: o: C. s: @" J* R5 n
    $ i0 C8 A# U: h2 q$ b: T0 X    StackImpl(int size) {9 A- b* p" I. ~* v. |6 y9 j( N
            element = new Object[size];
    ) P" W% f) s- {0 K$ K9 B9 s& |: b        maxSize = size;) D. `& T* [* f, U3 ]" e
        }
    4 z$ o( J! h+ c3 }+ |3 l- S5 a+ C  [, ~2 l0 b; u8 X
        @Override; Y; x1 O( m) ^% ~5 g! D% u. v0 q
        public void push(Object object) {4 c5 L4 u9 O: O4 ?
            //如果元素个数已经达到数组的最大个数,则进行扩容3 I+ w" y) T/ X/ v5 I& F1 A
            if (elementCount == maxSize) {; s3 v' v+ x# k
                element = Arrays.copyOf(element, elementCount + defaultSize);
    , f6 b7 ]: T0 O# r        }! c$ I* P) v* [; Y6 L
            element[elementCount++] = object;
    0 `: T- H4 v" K- z1 a3 p3 V# w0 l9 o8 C
        }
    % G  S; O* a) V/ t        // 本代码未实现数组的自动缩小,具体方法可参考JDK; T# p1 _6 M% v3 @- R/ [
        @Override2 K: x6 K: e  T/ l; U1 x9 M
        public Object pop() {! V8 o- l( ~" |% f* j6 q9 y
            if (elementCount == 0) {6 C- l: R5 `" m+ q, p- c
                throw new ArrayIndexOutOfBoundsException("栈中无元素");
    % r; `, j2 j; \; S. G        }
    4 F/ g! {6 _! d  B4 \, ^        Object object = element[--elementCount];
    7 L' `' R  e* _# x1 l2 t        element[elementCount] = null;
    ; m$ X/ O/ `; V( E7 |        return object;
    , T4 w/ N8 P1 [% @- q* Q    }  C! z' z6 W3 L# G9 s& {0 @

    0 N- p! o) j* Y. U# i- l, C3 u    @Override, f* V7 J% ]8 O/ x5 m  `' }
        public int getElementCount() {3 F( l8 p- ]& I' n
            return elementCount;/ U) k) @5 `: w2 m, @0 P8 e3 O5 e
        }
    , h" W; d) |/ c: y; I' P( f. [3 @$ {+ H3 p3 `/ h' L5 ^4 h# @3 O
        @Override: g! ]0 J. \3 Q' H
        public void traverse() {0 ], P# T/ c+ H+ |+ H9 y
            for (int i = 0; i < elementCount; i++) {( M& |+ }7 k  z
                System.out.print(element + ",");
    " l4 D; h" l8 D8 `  b        }
    ! l& `, k  p, L% u; Z& B4 i; ]/ t        System.out.println();
    2 n; s! |- l. x7 K# G+ G6 R) l    }
    ! g3 D; L2 j" H, X9 p}+ {/ W$ E; h. t# H$ G
    3、栈的测试
    ( n5 L  ^( W. y  cpublic class StackTest {. r8 [4 s! H" x3 B9 h
        public static void main(String[] args) {$ W% B9 A# h, |2 c& ~" n! S
            Stack stack = new StackImpl();
    # F; e+ U7 B' K/ f9 d- J; e+ X
    9 c7 u  e( Q9 k- c  Z0 I        //第一次入栈:压入1-15
    . i9 w5 F: T- m/ Y  S        for (int i = 0; i < 16; i++) {1 u$ e- F* x% ]- b
                stack.push(i);9 G! G) ^/ G* M' `+ G
            }
    , p& p% m2 M6 L$ v' k        System.out.println("第一次入栈后元素个数为:" + stack.getElementCount());
    8 d0 A2 ^6 R; m0 R        stack.traverse();
    - ]/ i$ x4 u: z0 {, p: J8 M( z- T+ _2 F0 N( O# s9 l) Q
            //第二次入栈:压入16-316 ~* _. x% y5 E# P0 Q5 C$ W0 f
            for (int i = 16; i < 32; i++) {; z! _+ }( l, c
                stack.push(i);
    6 Y: q' s7 S1 t( x( L        }* g- ?; V3 F, n/ E1 g/ u4 l
            System.out.println("第二次入栈后的元素个数为:" + stack.getElementCount());6 L+ A8 G+ ?8 @. o
            stack.traverse();
    % |7 ^# N- _, F8 U9 n$ J
    # x& m- [8 u- c. j5 G* P* G* Z        //第一次出栈:取出31-16
    : s# Z. ~3 _" [/ W. I. o' K        for (int i = 0; i < 16; i++) {
    # G; c. P: M- _0 @$ |$ t  Y            stack.pop();; P- x3 [3 m* Z
            }
    4 \# @( n& f& A) F8 y2 V        System.out.println("第一次出栈后的元素个数为:" + stack.getElementCount());
    / Q2 ^7 W0 r( @  s2 c% X+ t        stack.traverse();. o' U( y5 N4 q

    : ?4 t8 l# g% [- Z        //第二次出栈:取出15-08 R" l3 I( ?2 R; y- R2 f) p
            for (int i = 0; i < 16; i++) {7 m# j' }: `& t& D2 O
                stack.pop();' Y& E6 h/ M9 [6 B5 b' H
            }. H5 w, T) C- V+ i8 F
            System.out.println("第二次出栈后的元素个数为:" + stack.getElementCount());
      C* v4 ^  A9 M$ f7 a        stack.traverse();. j7 J: E% X4 x, t
    0 h6 B( M! F, [
            //栈中无元素,出栈报错# {* l1 ~( m+ D; ~
            stack.pop();
    # Q# ?) G6 _* c) d. t- r( z# Y/ s! {6 o9 Z$ M! e8 ^
        }9 ]$ {8 I2 _# \1 k1 m" V* d
    }
    8 U4 c! t- ~* k% w/ t, ` 3.png
    , L3 w. q- |9 b* U* j
      a/ |6 l, o! F* V; o$ ?2 s" S
    / W5 [$ j8 F1 Z; U0 _5 q
    $ r6 s( ~3 u2 Q! x0 M$ D三、 用数组实现队列1、队列的接口定义
    # f# q$ ?  K; X. D9 ~9 \/**
    ; o) s7 q7 ]9 V& u) e8 t& e1 J/ w * 定义队列的接口/ |- {6 {8 A9 H; }( L. O6 @* G
    *
    ( F. m; N. O9 k* N  g% o * @author zhuhuix' h+ j4 p' b4 W) S
    * @date 2020-05-01
      A$ `, R# K& m# i: f$ B */2 m% n) V  x( v2 q
    public interface Queue {9 q5 D' y8 V. M9 _! L

    6 J! y( g/ W* I0 ?    /**8 m5 v  l8 g" L
         * 获取队列大小; T0 w: T- Q4 Y" R4 N* Y
         * @return 队列大小' Z+ K/ h) D' k( s+ ~
         */) d5 [2 R" i8 q$ ~
        int getMaxSize();
    8 F1 q' k% }  j8 r/ M0 O
    / T4 |5 n( w9 J' @$ [/ V; A, w    /**
    # z! q6 P) X, y. G( `3 L4 d! q     * 入队! G  f( Z, r# t4 A( _* G; `
         * @param object 入队元素
    6 g- J8 x, X6 b1 _9 a8 M( x     */
    / l( V9 k* k5 O/ u# b    void push(Object object);
    , V; A% ]/ w$ T6 O: b2 O  g  ]3 o  S$ ^
        /**
    : g; B- ~# ?+ F     * 出队
    & Y- P% z; u2 _+ ?" @2 p% v     * @return 出栈元素& s! w. M% h& c2 I/ q
         */" i% _0 J  B) Y7 R3 T+ T
        Object pull();! O9 s1 }8 H1 W
    6 N7 M7 \; b8 k" X
        /**: r3 Y0 l( g8 \9 Y# J3 e& L
         *  获取元素个数
    2 z; I3 J% Y$ K7 C- K     * @return 元素个数/ f. i1 O9 Q( O6 T7 f8 n: G
         */7 t/ y4 I- I7 Z+ e( V0 [4 S
        int getElementCount();: h/ v3 Z; E. A/ E) {$ O
    1 `4 V8 y+ Y8 y
        /**" G. u5 E2 [# m4 w7 m
         *  获取队头元素0 @, ^" l1 W) |$ |
         * @return 队头元素
    # n1 q# H9 f1 d3 [# u! a" o     */
    9 Y( R* L; V9 i* |: x    Object getFront();
    ' e1 |% C' ?+ Q) [" Z) Z/ `/ i! K1 Q, R. N, b0 i2 [  R' c9 B
        /**( ?' w* O) W2 T( ]' r# ?3 S) @
         *  获取队尾元素
    , l1 l( L; U% U3 A     * @return 队尾元素
    / ]! C' r* p3 s) \     */
    7 V. K+ ?5 u6 h$ R5 W  F& |+ C1 _9 D0 o    Object getRear();1 \) G7 b( v# V( S5 j  s
    6 s. }6 G/ z! L- {9 [" q
        /**
    2 L0 q0 e# B/ g7 I% [: {" ^; ~     * 遍历队列的元素
    ' |2 {/ ]! C" w# y- L8 u9 ?6 I! Y     */
    1 k$ \: E, i( R5 F7 b" A    void traverse();0 z; p' ~. ~$ h! ^4 z
    }
    4 O+ p5 d( B0 v; K8 u2、队列的接口实现8 ~* l0 E& }8 |; P$ g) }
    /**
    : v6 }0 a9 F5 S% e; C * 队列的接口实现7 D/ W7 a$ x3 E) E5 i4 L. `
    ** ]2 {0 E4 w3 \
    * @author zhuhuix) p4 E6 c( e/ p, }5 r& i$ d
    * @date 2020-05-01
    1 y  K, N, t3 `, k */
    * y' R9 e8 d2 _public class QueueImpl implements Queue {& k  S8 h+ w$ J
    4 i; f* }, D- N
        protected Object[] element;
    5 ]" h! v& }7 q  F  M7 G5 r  T; K& m' G( }( q' ]+ {4 J
        protected int elementCount;
    $ f  @6 @# }1 m. f0 B4 j" ~( D
    5 v& w3 V$ {0 s; K    //队头4 w2 U; z1 ]0 p% C
        private int front;
    ' R1 ]/ E; Z8 l) _  L3 p4 _( a/ n! A' l) D' t
        //队尾
    & D0 R& |' @* W    private int rear;
    - T/ G* l4 ^0 T7 F& @
    * i$ \3 n( G% A4 M! g    private int defaultSize = 16;
    . C$ M' n4 `8 v7 L/ N( M% U
    5 ~: x/ `1 f5 w4 Z! m/ \, N* }    private int maxSize;
    5 {" z: `2 d2 g* Y% L1 D" U# h( e7 ^7 h0 {$ P' d7 I+ q4 ~
        QueueImpl() {
    $ o( A4 ~5 j" G2 _0 ~$ F9 e        element = new Object[defaultSize];
    7 u! ?; ?/ h% {- L3 [2 m        maxSize = defaultSize;
    # f5 _* T/ Q4 n6 ]6 g        front = 0;
    * D; L' ?$ V# m( u( U) R        rear = -1;
    3 L) ~7 {# V' B* p    }' O( u/ _9 s  |" k- Y7 D3 J" b
    3 _; ^. n% E% t$ `! g8 G+ F: V) n! u
        QueueImpl(int size) {$ w4 h; D2 A9 I1 T0 j& u- g
            element = new Object[size];( Z, ?; _" ?! u) X1 f4 b
            maxSize = size;
    - O5 M3 q( }. A  y        front = 0;
    + W' v9 ]  D' d  I+ Z) C7 R/ ]        rear = -1;
    ; h( b8 _2 s& K/ U) Z    }
    & u5 @3 u7 I2 P: M1 [9 ~  }1 l$ T, T2 n3 U% s
        @Override) d% X' G5 }7 W( W
        public int getMaxSize() {+ u( e6 ]+ Z. d/ ?7 q8 a
            return maxSize;' @' O* u0 c% d2 K  Z
        }
    9 {, x5 `2 ~6 P% [3 H0 y; Q' @: X+ _1 O9 b
        @Override1 K; E. Y- I2 ~% D
        public void push(Object object) {
    % K- Z! w% T- ?& m: c# k' \        //如果元素个数已经达到数组的最大个数,则进行扩容
    + r$ Q/ X# S6 i        if (elementCount == maxSize) {
    + K/ G. }) w( h4 s( E& W            throw new ArrayIndexOutOfBoundsException("队列已满,请先进行出队");
    4 \% W* |6 ^. }; e# \6 D4 E        }
    8 T# d% {$ l3 k8 E& ^8 \        element[++rear] = object;
    7 k+ A3 m- J0 z' W: {; g$ P        if (rear == element.length) {
    # P2 w; l* }/ J4 [4 Y7 ^) E- t            rear = -1;" g- o% \; H2 H$ ]# D
            }
    ( z( Z7 ^1 e# l/ Q* J; H$ ]1 U        elementCount++;5 A+ C# c4 U& @4 h$ o
        }) k/ k" S* A' M
    & Z& l( f) g6 P
        @Override4 B1 i( n; @1 p2 N2 v" d% }) `
        public Object pull() {& r! N* y2 k$ ~# I1 o+ a: V# o
            if (elementCount == 0) {
    $ q3 p& O) N6 J' y* ?% f8 @* X0 V) H            throw new ArrayIndexOutOfBoundsException("队列中无元素");
    ( ]) w5 I) x. O5 C        }$ N3 ~  X* y; R4 p
            Object object = element[front];- k, r6 N4 s4 X5 u
            element[front] = null;- D% O3 Z0 }% d9 F9 v& m
            front++;
    " f/ R: Y+ _  I% r0 f7 [0 r* }        elementCount--;
    ' ?% X" l% u" X1 M1 w+ @        //队列清空,队头队尾恢复初始值. A) }  `) h& b! {* d
            if (elementCount == 0) {
    6 r! k# e: \# T; a; A. j* s            front = 0;
    # E5 h  f3 c! [( h% E1 {7 @            rear = -1;! s) p+ Z* F+ ?) h1 a
            }
    5 m" s  _% w$ u2 u6 u0 L        return object;+ c  j6 C, N. j+ H* n
        }. g7 W- i! L7 ~

    3 ^- R. H6 T/ y5 t# J' J3 n    @Override
    & K, C6 p( a1 ?$ d    public int getElementCount() {
    & V, `+ t' h' p+ K; ]% q1 N        return elementCount;
    8 Z  h- _& i& z+ b4 c: @6 q" ?. v    }3 ]7 k! Z7 K* n& y

    ) p  `# A; m0 ?$ G% T6 z: z    @Override
    2 a* x3 Z# i7 c/ g9 }' {7 W    public Object getFront() {
    , Y1 W' J5 g9 G* w  S        if (elementCount == 0) {: [" N# W7 }9 \4 m) @+ @7 x! }
                System.out.print("队头无元素");# R1 ]5 V9 z# a; Y1 X; B$ ^- R
                return null;
    ( b8 {: {4 y8 T% ^& y% {4 h% @        }
    ( k/ \- u- B& T4 `4 I/ h' L        return element[front];
    - p2 Q+ y8 E5 N! T+ [8 _    }
    7 u4 k* j+ {3 Q
    6 q$ b1 H* A# ~, h9 z    @Override
    0 ^7 E- o: Z/ x# |* k    public Object getRear() {% ?0 t( V# k$ o8 K
            if (elementCount == 0) {
      J$ R9 q4 U* _/ d            System.out.print("队尾无元素");$ L, U' ~$ H) k
                return null;
    1 s) ^& u# N8 I# L& u& `        }: o% j1 B& Q! v
            return element[rear];0 Q* X# z# a, r7 X) n
        }
    3 w- ]$ q5 |7 C0 l5 G9 Y* c% W; f! \2 ^
        @Override( n* S, m* g- ?% m
        public void traverse() {4 m4 x6 `/ m# m( B- @1 K" g. a5 M
            if (elementCount == 0) {9 B+ [1 `* O1 L9 S
                return;
    : j# }: K' k7 A        }
    7 h  u4 ?- b, P+ u1 w+ a        for (int i = front; i <= rear; i++) {
    3 F9 e* o+ ]4 E0 e* N            System.out.print(element + ",");
    9 C, [* r: c, s0 B7 H        }
    7 S  a5 F4 S1 t' X) ^; |' m/ c0 p        System.out.println();6 h3 W1 b9 K4 C! ?" M' C
        }
    7 t+ \. w4 \( k8 N& d}/ l7 ]( z' q2 a- z7 [" q
    1 W( X  @3 `$ g$ Z
    7 i2 x+ B( P' J$ @1 W+ f: |3 s
    3、队列的测试
    9 S' e7 I8 N+ e" apublic class QueueTest {
      ?" X3 q" T  o) ?& J    public static void main(String[] args) {
    2 b2 b; ?2 F+ E9 m        Queue queue = new QueueImpl();
    3 y( H4 y9 E4 Y  w/ u: B9 i* D4 ?1 d; u: F
            //获取队列大小
    ; x# s  a4 r3 ~; V/ ^, h        System.out.println("队列中最大可放置元素:" + queue.getMaxSize());
    " L+ {6 ?3 s- z. y) Q, a9 U
    - h5 t. x6 M# [3 K        //第一次入队列:压入1-154 l) n9 ~% I% e1 q; b! k8 h4 i
            for (int i = 0; i < 16; i++) {
    " ?$ T7 }; D& L            queue.push(i);8 [( ?0 m0 o. V+ A7 u1 R" V1 v
            }0 c9 Y- c- }( l3 S6 ]7 Y( N
            System.out.println("第一次入队后元素个数为:" + queue.getElementCount());
    " L0 n+ H! X9 U4 E6 _' ^! n        queue.traverse();
    4 }  y+ u4 S6 D" @$ O. \+ z7 A" F        System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());
    ; c9 ~' L& v7 I0 d# S  T* d1 Z  _* A' p4 x  F, \. E6 V9 u9 k6 c: W! `
            //第一次出队:取出0-15% I+ Y' a; k1 |, n, d
            for (int i = 0; i < 16; i++) {
    + e+ o( c7 k8 T1 X3 w            queue.pull();
    0 U' W2 _5 A" |9 I        }
    , |" ]1 F  b# J0 S6 F1 b        System.out.println("第一次出队后元素个数为:" + queue.getElementCount());+ i( h& P4 d2 u2 b& z$ ~
            queue.traverse();. }9 ~4 t$ d) m# w1 t
            System.out.println("队头:"+queue.getFront()+" 队尾:"+queue.getRear());$ R! t  e. n. _: m  k) K0 x

    0 ?# g% M' m/ F! Y# ]/ S+ O
    5 L+ Z+ y. Q- n, f. U! u1 O4 j) C        //第二次入队列:压入16,31  m/ Z! }/ O9 l  w
            for (int i = 16; i < 32; i++) {$ U% F4 ]7 y; ^6 \+ Q! `. o) S0 j6 Y4 w
                queue.push(i);) n% }+ h2 C! b3 R& D
            }
    1 C5 |. p' |  x" E1 b1 j& i$ Z0 \$ C2 ?        System.out.println("第二次入队后元素个数为:" + queue.getElementCount());
    8 o; |1 F6 V5 O# l9 `/ g+ Y+ U$ m        queue.traverse();
    3 x8 ?) `; s! Q5 I1 ?6 V, o' J! V: h

    : F5 u) Y! I6 D+ U        //第二次出队:取出16-31
    % d& f9 I9 s" l# X3 P        for (int i = 0; i < 16; i++) {; O6 L% Y4 w' q1 @, }/ y
                queue.pull();
    & k7 C' k9 [6 N; x$ X, k        }
    : w: J* L  j" v        System.out.println("第二次出队后元素个数为:" + queue.getElementCount());3 w$ t2 Q0 h9 R9 p- I4 M' i$ i
            queue.traverse();8 b* w+ F1 c- {! v) d2 g

    / X6 O3 P$ N, ]9 l" M        //空队列出队报错
    7 @! C/ Q( l5 b, ?8 S' k8 I        queue.pull();" O- C  V9 s- U& u, O( b. @  {

    ; j' {+ ?9 L9 k9 K' z8 T    }; t3 l. d# q! ^+ Y) m
    }  `6 G4 R+ m4 ?& ]
    , d( L7 c" S2 ~2 ]7 P; J. b
    5 o9 c# `9 B# H2 }6 t7 ^8 D7 Y

    ' [: X# p$ w& C5 q6 h4 h& [/ R% ?4 Q

    ' X2 C8 b/ Q& N5 T- v# o5 b1 F
    - V+ D& X* ?1 b1 n
    9 J2 o) ?) }8 m7 q$ \
    & J/ m3 M" R! z3 d, O; H. o
    + ^+ l2 r8 E0 |
    - I& [4 R7 |! w
    & q! F; ]- x# V
    + Q4 _% N+ D: ^+ c* {3 Y# x% o* N0 h1 u+ X# T; b

    ' }% l; P& I' M. P& v0 w* |; [, _/ B9 P& I
    ————————————————* E5 w& R0 y2 j2 `
    版权声明:本文为CSDN博主「智慧zhuhuix」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 Q8 r4 p  e/ a, V* l  y$ i
    原文链接:https://blog.csdn.net/jpgzhu/article/details/105876785$ f; W) s3 ^; g* F; z1 @; v* G# |, B

    / I7 V  r. k* o: q( X; h$ j$ \7 g! j/ k9 q
    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, 2025-8-20 03:18 , Processed in 0.522282 second(s), 53 queries .

    回顶部