最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

go語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 環(huán)形隊(duì)列

queen.go

package data_struct

import "log"

//环形队列实现 队列,先进先出。追加至队尾,弹出队顶
type Queen struct {
    Length   int64 //队列长度
    Capacity int64 //队列容量
    Head     int64 //队头
    Tail     int64 //队尾
    Data     []interface{}
}

//初始化
func MakeQueen(length int64) Queen {
    var q = Queen{
        Length: length,
        Data:   make([]interface{}, length),
    }
    return q
}

//判断是否为空
func (t *Queen) IsEmpty() bool {
    return t.Capacity == 0
}

//判断是否满
func (t *Queen) IsFull() bool {
    return t.Capacity == t.Length
}

//加一个元素
func (t *Queen) Append(element interface{}) bool {
    if t.IsFull() {
        log.Println("队列已满 ,无法加入")
        return false
    }
    t.Data[t.Tail] = element
    t.Tail++
    t.Capacity++
    return true
}

//弹出一个元素,并返回
func (t *Queen) OutElement() interface{} {
    if t.IsEmpty() {
        log.Println("队列为空,无法弹出")
    }
    defer func() {
        t.Capacity--
        t.Head++
    }()
    return t.Data[t.Head]
}

//遍历
func (t *Queen) Each(fn func(node interface{})) {
    for i := t.Head; i < t.Head+t.Capacity; i++ {
        fn(t.Data[i%t.Length])
    }
}

//清空
func (t *Queen) Clcear() bool {
    t.Capacity = 0
    t.Head = 0
    t.Tail = 0
    t.Data = make([]interface{}, t.Length)
    return true
}

queen_test.go

package data_struct

import (
    "fmt"
    "testing"
)

func TestQueen(t *testing.T) {
    var testLength = int64(4)
    q := MakeQueen(testLength)
    if q.Length != testLength {
        t.Error("MakeQueen(4)的容量不是4")
    }
    q.Append(10)
    q.Append(12)
    q.Append(14)
    q.Append(16)
    //q.Append(18)

    q.OutElement()
    //fmt.Println(q.OutElement())
    if q.Capacity != 3 {
        t.Error("队队长度不正确")
    }

    q.Each(func(node interface{}) {
        fmt.Println(node)
    })

    q.Clcear()
    if q.Capacity != 0 {
        t.Error("queen的长度不为0")
    }
    q.Each(func(node interface{}) {
        fmt.Println(node)
    })

    q.Append("B")
    q.Append('A')

    q.Each(func(node interface{}) {
        fmt.Println(node)
    })
}
點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消