日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang实现link的过程

發布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang实现link的过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

golang實現link

使用golang實現single link過程, 許久沒有編寫數據結構的實現方式, 編寫過程需要關注

  • link的關注點, 在進入函數的時候需要重新定義一個link指針;
  • 增加一個head進行判斷,會省去head節點的判斷, 浪費一個節點;
  • link的next及next的判斷很關鍵;如果判斷失誤會出現for的死循環;
  • 采用對象的方式編碼,先創建了一個head, 實現的功能包括:,
    • (l *link)IsEmpty
    • (l *link)Delete()
    • (l *link)Insert(v int) link有序存放;
    • (l *link)Append(v int)
  • type link struct {val intnext *link }func main() {fmt.Println("hello link")head := new(link)l := head// for i := 0; i < 10; i++ {// num := rand.Intn(100)// l.Append(num)// }rand.Seed(time.Now().UnixNano())for i := 0; i < 25; i++ {num := rand.Intn(100)l.Insert(num)}head.Prt()head.Delete(15)head.Delete(20)head.Delete(25)head.Prt()}func (l *link) Append(v int) {n := link{v, nil}last := lif last.next == nil {last.next = &n} else {for last.next != nil {last = last.next}last.next = &n} }func (l *link) Insert(v int) {n := link{v, nil}ins := lflag := false // 初始未插入if ins.next == nil {ins.next = &n} else {for ins.next != nil {if n.val < ins.next.val { // 小于后節點,插入n.next = ins.nextins.next = &nflag = truebreak} else {ins = ins.next}}if flag == false {ins.next = &n}} }func (l *link) Prt() {prt := l.nextfor prt.next != nil {fmt.Printf("%d ", prt.val)prt = prt.next}fmt.Println(prt.val)}func (l *link) IsEmpty() bool {if l.next != nil {return false}return true }func (l *link) Delete(v int) {cur := lif cur.IsEmpty() == true {return}for cur.next != nil {if cur.next.val == v {fmt.Println("Delete value ", v)if cur.next.next != nil {cur.next = cur.next.next} else {cur.next = nil}}cur = cur.next} }

    轉載于:https://www.cnblogs.com/gpan/p/9841870.html

    總結

    以上是生活随笔為你收集整理的golang实现link的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。