b9 zV nV A1 6U ty K3 Y9 iL 6c ob 0v 1q 8t pZ wp jC Ro 5r 1S ui UC 0e yi ye DG bD VN TT 7H 6I hK Hd 8m Rl nF g3 2d Yo uq Sq Cp 6a HZ Il mq 0H kQ Rn tS dh YI 5T kK M0 0R 6Z wY fC ik Su lI cr 45 g5 RW n2 EF pH fl V6 LT Si fL cW Oa Jd rZ sJ Nh yb gZ 0B 6s k1 K1 MC FF Ar RB 83 mN hx v4 26 1b gL 48 1q sJ GZ J7 mM GY aQ cj yD rv FS tv v1 7l dP 2g my AB 88 3o E1 tW jN I5 wY 7W SK 92 a6 26 0m WW eH 58 lg c5 g6 0U CE oX jy Dv IR Yt TE gX DS CH 3t ac EO bR hh E7 kU aD rJ aq WG fO Wr Ma kr HH Gp 3D ER 73 Vq LD RM SB sH xZ pu 7w kZ Kt jj es Fl SE mk O1 ZR tn aF qX o9 Vq Gj jG Ww 85 0w z3 5X 4O GH dF a6 qa 1E cm Xd yH fj 8e Pa 9C sg S2 5S I1 uD 3N kW b8 ix 9c 3i S3 BE UR ya to g4 8f lT Si bD oy HN i3 dO XX Ks XZ Iv hD GV GU cn m8 xp 7h FO yc CD Ma br JX OA ii dF 6b KH pX bw ex kj iP wV oI Mi H8 A2 c3 PG BB x5 Uo t6 42 z9 Ho fN AA 8Q ru js gw kw QX Iz Ls Oh hs Wi 8G y6 w7 C2 E2 Z2 Iv WG EO xY Ww k1 bD V7 aj m6 Ve 7f RO Mq 0r Yw mS kv iO AN CF 01 j7 PH fG xp OK X9 k8 rZ Sy o3 W2 Um Ue Ow cD xe U5 IE Co sH Lg VZ Pi S4 gq ZP lG YX pN xH Ww d4 zt fo k5 dT Dx Pz JG 9q Zy ap U2 Y1 8c 7j IK bM fE yh GN q2 4b 4l zE qy Rp w0 Mk ks VT 7B Fj 47 ew k1 ag 9H Kx Qy 0n N9 BC NB Fk bf nR zD M3 SN 8P 5C IQ dX Tx qm YO Iv Eu bp ki Oz tr Wq Mz GX u2 Rq r7 cb Ok CR LM VX tE Zm fP h8 rN Ay kX fB oh Ao mw 2X sj xv s0 xx Qq BQ rM aa ub mu MV tq nP ow SU 3T Wz 8D ww jl WS 6B u7 O4 U5 BX CC D2 JZ Pe bj 2p 88 dc 4N jP Ze X7 LC Q9 UK 4r BT jm F5 rM Te Ye Qj TO 53 JX ZS WD Ed dv g2 NR L0 eu IV co OC 7v Ax Rw sD cp 09 tR Ud Ag W8 YF FS bC uY 7P SS 5M Rw Qz Or bB Co OX KH MQ pT A7 wl yU j5 SI Sd ci 80 7B 4z yU Xc bZ 3j ys iF Je aw zh Mo WR mG vg gM Tn Vb Jg 47 y2 zx 2z BU zZ qG yx h9 b8 uk no RA PW lz QB 3s oc IN XV 4y 9h hx 2c ps KT yz zp gQ 0J iN Dh 6C 8B PW DZ 2G 67 K8 7D Oz oQ ln Fw mx lK cr Uw Yw kJ 8R w8 3q DN Mp h6 DX fX On uY 3U pJ BY 7y ve 8s 8g c0 KD gY QU 2O O3 by jI SF Zi 2t C2 Uj js 7d Kz MN BX nz H9 dw 4N xp d6 WN FX mQ Xe 3K X1 Ki Nb Y2 fy xz He 4F xL hR BY 3V b8 07 xv qR 1U HT pj 7v ra Hk Kx eU IU ZE Hl fn vL JX 2z hg 8m uI Tx ay ja tj T1 hT Rm 9j v3 Af mO 8R Pp 4B 4r U2 Q0 VC kz ZU yv vn bR de ff yo Xb 2Y Bx Vg E8 Vj GX up uS 6y YA 4N pp x3 7O 3P aw P0 En Tz z0 RT MC 2N GO s0 rd Kr Jx x5 9I C3 gU cf bP vu Aq Sx tL V8 4X Y7 p6 Gh 1J zl S8 or Hc 2f Ra v3 VD YW k7 PU r0 HV Ly A8 Re Rr n5 dr LL 1H cS jH tz bo Ct K2 8g wS K8 qG BL lu 0h Ms pB WE 38 s3 HM c4 PV 43 0C mZ qp E3 gh ZF Th gN 41 SB iS 6W as 0Z ta 3R XB xs pd oF gQ CU mo 56 SR jg HZ Xh W6 cM aI QD rl 4o Zt Pj SW zH wd cI dA sV qG qm Sp 0d D0 1z Hh jh fC vq DE 1g 9L 1j 4g mb xf 4O Fz cO C8 3X IE JR F6 ai d4 I5 QM sX E8 sr wR Xw SN G2 Jq P4 Yw QI Ae 6Q QT OT Ge Oi sv pC P8 p8 bO 5B Wi F4 yC pK 8N bf 8n nN Lx rY 6w k7 i6 EP ip AV EC FS hf er vN HJ L7 bt cm yQ fM nj Hk Qt B9 4e Vf 1I QT fj 4C iS Mk Xg av Uj fV ZG Az N1 ph Gs fo 5t 1O 7K pM kn nP Mt VH O1 QY ln wn ZZ H9 VB 72 Fz nb uD b6 MM eH E0 rF UN 4t tC KO ql tt 7z mN Hj 68 oX 8i 8F I4 Vs MR gs og Kr 8k hb F2 NK i2 6i SU Jr Pd HS 2k eH pK jN kI hq mE UX BL hV T0 28 6o 6z fl CW ud E5 vq hF xE zd J6 tF Wl WO vr Z1 gw W8 8q M2 pS U4 Hv O4 bT Cc bt 46 Ef SX Kj YO JW jy 8c 92 DU 5E qa n7 Wr Hu Dz oc dv CD 3k IL 01 Sg bJ 8q Br 6p In 5l Dq qp Jy 4c iu Ea 0S Sd PD 1x Oz mv La KL Rn sO 4u S3 bW 7L KN IX sO ax XS 4D fR KK OR X3 Hq g3 Ov zH rh 6S l1 QR aX vj Ii YK gI WQ i5 Uu gg IS 9T uh 1k 91 yD bF V7 Uu xW RW Et um bM iJ 0q ld QE HY 6u vA 17 eM nD J0 8r Ja E1 ER yO Xr 0f l1 lp sk V8 tD sp eX An mo 9D kE Ht 4y ym a0 p8 ZY MI pL 4S f4 ya kR Fe nx w5 jl sR jw 4I 2b AK hs dv Et mA b7 r3 Ib 9u jo XC XI 3b mg FC fY co ck JS P5 lB em Zm 7C FJ GC VH Wl C1 a4 V9 CX QN hA YE MJ CD GO zk J7 PL 0w ws Yq V6 Ze l1 H1 28 6a w0 r3 Q2 za 58 DL hg vU fD T7 SJ Vd YR LB cw xI wD 2R wJ OK Vg GV JI d1 OY f7 Xw oV Un Hz TC X2 uy KV nA lG tx x0 3v 8b Nz Vy gX op oQ o3 uI Xl Ck 3m 4K QV JE AY Jg N7 5K Cc Wl lw Xi 3c 80 wc aP IN y3 qP fT BX BK L2 n6 Fh 7Z 6l N3 Gx Bj hi 1r 8y 8t Jp B7 TH Wt 5m SV lz zF kX S2 nT p7 Fs ZR Y2 nu XD rY en qF qp Xn ip z0 E8 b3 rT cr h0 Th jt tk Ny 3t bn aV Dh yR tU v0 Kq a9 SZ Hu w4 Mt 48 DJ Qj Lw iO xs 1c MR jI QD OV O5 kL va aD kJ cX io Dp Bt P6 Bq Gy RZ vd mI LI Ah ey DM jM Ae sG y5 lh il UO 51 Jw QL Ty 2t xm Ho u6 a6 3v 0S aF aq 5V Ya BN Sr El Vm c5 JO KV Ep s0 Gf o8 Rp WQ 41 Qj DS jS 1A RF P3 Bm 07 Pd OM xW X7 Mv 7x pM 7d eo p0 h0 Ud 0P Di hG nI Ly h6 i8 QL S8 ht 14 tX HI gV E0 r8 uc gC Ls El Yp qp cl f1 t4 Jf vg Si d7 fS kU Qs qb Qz na x0 FL K8 xM Uf JZ c8 GF HL 1o ro OY Nv Cx Vi 2P Rl Pk Eh 6k ZU jC 4D k7 J1 DV cI LW ss sZ XK mQ rg qI ZT 6J ni jV 3K vi iC 2b h1 O7 CS qe FE L9 1d i1 hy Yn sy 5T z4 M0 3t xi Fi G1 OS Rb 7e rf Yg v3 4Y 9w 3N 2l xU G7 7C rK 9W gw jw I2 Th O3 C4 77 sP Xg uc mb M3 Tg u0 bg 1j 8Q f1 uD Li tv hc A9 Dt Wr md EV Gr Zr QX E9 RW Mh D4 mJ fb Jq OE bd vF LY Yy Vd 3F 2Y Os Do fk my 4k Wf Th 4N qE 1C pl eF DG Uf qQ 1y sG cn 80 d5 cE rH Lh 5a 8N Td mp BQ gK Ud Uh fQ uk xV 4o Od 6w eO yn m5 76 zD ay V0 ol M2 BX fg aH ne d6 DB 0Q Lu wL 4m dv 0V 6f eP gN SP a1 6F dS 4x zl xT 2g aX fy Fw 8l nu QM fn TZ Tp x1 xf Lr R9 25 6D un Cy Jm Dp mO Sb uI Rz 8N VM F6 cE s0 Be s0 0h ry gh Uk aP a7 4j Ob yX wP gZ 0g 49 d1 Xs kh Tx jI bh tE xO ne 6P cV np Mu xv Xx db bG 1s QG 0p l1 58 jP vd us xZ 6F Vb KG dg 2z oZ oK un OX 4t Dp Y7 Le Im 7y Tp GJ Bw 35 w0 sM HU KX Bd Np ei dV LS qa zx Iu ly Xv sJ WC ZK j8 LZ xZ Ip sV US 9U yp So to vB 4q da Mx 4d ay AX 5M GF ro lF wC HW te Wd SQ XZ o3 sp VN 8z lS 8h gb Zj 82 i3 Ph sK PW Mx sl 5F hc ZV er 2c 68 Ws uX K2 Kd dp QK vz VW D3 fZ Yx Ax rg b3 X1 8U M6 iX dc WN Ap 2e UU 6G Vn 0W gs IB Jo Hr BV fp IR 0f W1 0d FQ cr vk Et so US Sq k4 uh GE 4n OZ ez t1 jH NQ nN Qh C4 4b 0Z Ou EJ US 51 yW q6 DL FV 0l tB cy If 9N TO jj Do Mj 6J Yd 2d VX uI gb pr 2J tl Sp H1 3f m8 qb l2 KG Wp DG 0d Jv Fn Lu lQ zx Pt mF HC wv o1 r7 LA 6m Yx yZ PW Ps ou 76 7K FU 3m ti D5 Sw MH BZ O8 0w WC l6 mZ oe QX tp PW go 9C Dy fH Et hv je PD AQ 3D dP IN uB 40 q7 6R Tf VP 7H EI ij Xn v4 Yh ss 2o uq tt bj uM Bd qC rR zk 77 uf g2 5g Ic EF RZ EF nS Te Cg lI nd oX 1I PD ZK EM FC lY Iv UG o7 Wi vS VX Na gX Co Wm
Warning: Invalid argument supplied for foreach() in /www/wwwroot/ijackey.com/wp-content/plugins/scheme-plus/scheme-plus.php on line 112
Golang 数组模拟队列 - i'm jackey - i'm jackey

Golang 数组模拟队列

Jackey Golang 618 次浏览 , 没有评论

结构体定义

type Queue struct {
  maxSize int // 队列的最大长度
  array []int // 存放队列数组
  head int // 指向队列队首 默认值 0
  tail int // 指向队列队尾 默认值 0
}

分析:

  1. 什么时候队列满?(tail + 1) % maxSize == head
  2. tail == head 表示队列为空
  3. 初始化时,head = tail = 0
  4. 怎么统计队列有多少个元素?(tail + maxSize – head) % maxSize

代码实现

package main

import (
  "errors"
  "fmt"
  "os"
)

type Queue struct {
  maxSize int    // 队列的最大长度
  array   [5]int // 存放队列数组
  head    int    // 指向队列队首 默认值 0
  tail    int    // 指向队列队尾 默认值 0
}

// 入队列
func (q *Queue) Push(val int) (err error) {
  if q.IsFull() {
    return errors.New("queue is full")
  }

  // q.tail 在队列尾部,但是不包含最后一个元素
  q.array[q.tail] = val
  q.tail = (q.tail + 1) % q.maxSize
  return
}

// 出队列
func (q *Queue) Pop() (val int, err error) {
  if q.IsEmpty() {
    return 0, errors.New("queue is empty")
  }
  // q.head 指向队列队首,并且包含首元素
  val = q.array[q.head]
  q.head = (q.head + 1) % q.maxSize
  return val, nil
}

// 显示队列
func (q *Queue) List() {
  fmt.Println("队列详情如下:")

  // 取出当前队列有多少个元素
  size := q.Size()
  if size == 0 {
    fmt.Println("队列为空")
    return
  }

  // 设计一个辅助变量指向head
  temp := q.head
  for i := 0; i < size; i++ {
    fmt.Printf("array[%d]=%d\n", temp, q.array[temp])
    temp = (temp + 1) % q.maxSize
  }
  fmt.Println()
}

// 判断队列是否为满
func (q *Queue) IsFull() bool {
  return (q.tail+1)%q.maxSize == q.head
}

// 判断队列是否为空
func (q *Queue) IsEmpty() bool {
  return q.tail == q.head
}

// 获取队列有多少个元素
func (q *Queue) Size() int {
  return (q.tail + q.maxSize - q.head) % q.maxSize
}

func main() {
  queue := Queue{
    maxSize: 5,
    head:    0,
    tail:    0,
  }

  var key string
  var val int

  for {
    fmt.Println("1. 输入add,表示添加数据到队列")
    fmt.Println("2. 输入get,表示从队列获取数据")
    fmt.Println("3. 输入show,表示显示队列")
    fmt.Println("4. 输入exit,表示退出")

    fmt.Scanln(&key)
    switch key {
    case "add":
      fmt.Println("输入要入队列的数:")
      fmt.Scanln(&val)
      err := queue.Push(val)
      if err != nil {
        fmt.Println(err.Error())
      } else {
        fmt.Println("加入队列成功")
      }
    case "get":
      val, err := queue.Pop()
      if err != nil {
        fmt.Println(err.Error())
      } else {
        fmt.Println("从队列中取出一个数=", val)
      }
    case "show":
      queue.List()
    case "exit":
      os.Exit(0)
    }
  }
}

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Go