第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中尋找合理的堆棧實現(xiàn)?

在 golang 中尋找合理的堆棧實現(xiàn)?

Go
qq_遁去的一_1 2021-09-13 16:53:02
到目前為止,我天真的方法是type stack []intfunc (s *stack) Push(v int) {    *s = append(*s, v)}func (s *stack) Pop() int {    res:=(*s)[len(*s)-1]    *s=(*s)[:len(*s)-1]    return res}它有效 - playground,但看起來很丑并且有太多的取消引用。我能做得更好嗎?
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經(jīng)驗 獲得超8個贊

這是使用鏈接數(shù)據(jù)結構的 LIFO 實現(xiàn)


package stack


import "sync"


type element struct {

    data interface{}

    next *element

}


type stack struct {

    lock *sync.Mutex

    head *element

    Size int

}


func (stk *stack) Push(data interface{}) {

    stk.lock.Lock()


    element := new(element)

    element.data = data

    temp := stk.head

    element.next = temp

    stk.head = element

    stk.Size++


    stk.lock.Unlock()

}


func (stk *stack) Pop() interface{} {

    if stk.head == nil {

        return nil

    }

    stk.lock.Lock()

    r := stk.head.data

    stk.head = stk.head.next

    stk.Size--


    stk.lock.Unlock()


    return r

}


func New() *stack {

    stk := new(stack)

    stk.lock = &sync.Mutex{}


    return stk

}



查看完整回答
反對 回復 2021-09-13
  • 3 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號