一般來說,為了比較好的對單鏈表進行增刪該查操作,會設定乙個頭節點來標識煉表頭,這個節點本身不存放資料。
**如下:
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 修改遍歷及查詢...