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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构--单向链表

發布時間:2025/3/21 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构--单向链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單向鏈表的一種Go語言實現

package mainimport "fmt"type Node struct {no intname stringnext *Node }//實現尾部插入一個節點到鏈表(隊列Push的一種實現) func InsertTail(head *Node, newNode *Node){//先找到鏈表的最后一個節點,需要保持頭結點不動,這里創建一個中間臨時節點temp := head//遍歷鏈表直到最后一個節點進行插入for {if temp.next == nil { //這個條件就是鏈表的最后位置break}temp = temp.next}//將新的節點接入到鏈表尾部temp.next = newNode }//實現有序插入一個節點到鏈表中 func InsertSort(head, newNode *Node){temp := head//重點:插入時必須要在temp的位置讓temp.next.no和newNode.no進行比較,不然會錯過插入時機for {if temp.next == nil { //說明已經在鏈表的尾部了//注意:下面兩行的順序不能顛倒newNode.next = temp.nexttemp.next = newNodebreak} else if temp.next.no >= newNode.no {newNode.next = temp.nexttemp.next = newNodebreak}temp = temp.next} }//實現頭部插入節點(隊列Push的一種實現) func InsertHead(head, newNode *Node){newNode.next = head.nexthead.next = newNode }//實現一個刪除鏈表節點的函數 func Delete(head *Node, node *Node) {temp := headfor {if temp.next == nil { //說明已經在鏈表的尾部了,沒有找到要刪除的節點break} else if temp.next.no == node.no {temp.next = node.next//下面這種方法也可以,不過理解起來有點繞//temp.next = temp.next.nextbreak}temp = temp.next} }//實現一個頭部刪除鏈表節點的函數(隊列Pop的一種實現) func DeleteHead(head *Node){if head.next == nil{return}else {head.next = head.next.next} }//實現一個尾部刪除鏈表節點的函數(隊列Pop的一種實現) func DeleteTail(head *Node){temp := headfor {if temp.next == nil{ //說明鏈表為空return}else if temp.next.next == nil{temp.next = nilbreak}temp = temp.next} }//實現顯示鏈表中所有節點信息 func List(head *Node){//前提是不能改變頭結點temp := headif temp.next == nil {fmt.Println("鏈表為空")return}for {fmt.Printf("%d %s -->", temp.next.no, temp.next.name) //打印下一個節點的信息temp = temp.nextif temp.next == nil {break}} }func main(){//定義一個頭結點head := &Node{}//定義一個節點信息node1 := &Node{no: 1,name: "Number1",next: nil,}node2 := &Node{no: 2,name: "Number2",next: nil,}node3 := &Node{no: 3,name: "Number3",next: nil,}node4 := &Node{no: 2,name: "Number4",next: nil,}InsertTail(head, node1)InsertTail(head, node2)InsertSort(head, node3)InsertSort(head, node2)InsertSort(head, node1)InsertSort(head, node4)Delete(head, node4)InsertHead(head, node1)InsertHead(head, node2)InsertHead(head, node3)InsertHead(head, node4)DeleteHead(head)DeleteTail(head)List(head) }

總結

以上是生活随笔為你收集整理的数据结构--单向链表的全部內容,希望文章能夠幫你解決所遇到的問題。

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