Go語言 資料結構 單鏈表相關操作

2021-09-25 04:30:35 字數 1678 閱讀 1699

一般來說,為了比較好的對單鏈表進行增刪該查操作,會設定乙個頭節點來標識煉表頭,這個節點本身不存放資料。

**如下:

package main

import

("fmt"

)//定義乙個heronode

type heronode struct

//給鍊錶插入乙個結點,在單鏈表的最後加入

func

insertheronode

(head *heronode, newheronode *heronode)

temp = temp.next // 2.讓temp不斷的指向下乙個結點

}//3. 將newheronode加入到鍊錶的最後

temp.next = newheronode

}//給鍊錶插入乙個結點,根據no 的編號從小到大插入 (用處較多)

func

insertheronode2

(head *heronode, newheronode *heronode)

else

if temp.next.no >= newheronode.no

else

if temp.next.no == newheronode.no

temp = temp.next

}if!flag

else

}//刪除乙個結點

func

delhernode

(head *heronode, id int

)else

if temp.next.no == id

temp = temp.next

}if flag

else

}//顯示鍊錶的所有結點資訊

func

listheronode

(head *heronode)

//2. 遍歷這個鍊錶

for}

}func

main()

//1. 先建立乙個頭結點,

hero1 :=

&heronode

hero2 :=

&heronode

hero3 :=

&heronode

// hero4 := &heronode

//3. 加入

fmt.

println

("遍歷結果如下:"

)insertheronode2

(head, hero3)

insertheronode2

(head, hero1)

insertheronode2

(head, hero2)

// 4. 顯示

listheronode

(head)

fmt.

println()

// 5 刪除

fmt.

println

("刪除之後:"

)delhernode

(head,2)

//delhernode(head, 3)

listheronode

(head)

}

執行結果如下圖所示:

資料結構 單鏈表相關知識

1 建立乙個單鏈表 實現思路 首先,定義乙個頭結點 l 為其在記憶體中開闢一段空間並將指標域指標指向null 其次,生成乙個新結點p,將要插入的資料元素儲存到結點的資料域,並將其指標域指標指向頭結點 l 指向的結點 或null 最後,將新結點p插入到表頭。隨機產生n個元素的值,建立帶頭結點的單鏈線性...

資料結構 單鏈表相關習題3

解題思路 兩煉表若相交,則其最後乙個節點必定相同。所以遍歷得出兩鍊錶的尾節點可得知兩鍊錶是否相交。若兩鍊錶相交,則求出兩鍊錶長度,相減得其差值len。較長鍊錶先向後遍歷len次,隨後兩鍊錶同時向後遍歷。直到出現兩值相同時,該節點即為相交點。判定兩個鍊錶是否相交,並求出交點 linknode hasc...

C語言 單鏈表相關操作

結構體定義 struct link list typedef link list list 將資料封裝成節點 資料要想放入鍊錶中必須將資料做成節點,由於很多操作都需要所以單獨寫成乙個函式,這裡只拿int型別舉例,其他資料型別差別不大 list create node int data 修改遍歷及查詢...