2020-08-07:給定單向連結串列的頭指標和一個要刪除的值,返回刪除後的連結串列的頭節點。
阿新 • • 發佈:2020-08-07
福哥答案2020-08-07:
1.新增虛擬頭,返回head.Next。
2.換頭,返回head。
程式碼用go語言編寫,如下:
package test32_deletenode import ( "fmt" "testing" ) //go test -v -test.run TestDeleteNode func TestDeleteNode(t *testing.T) { if true { head := &ListNode{} head.Val = 1 head.Next = &ListNode{} head.Next.Val = 5 head.Next.Next = &ListNode{} head.Next.Next.Val = 1 head.Next.Next.Next = &ListNode{} head.Next.Next.Next.Val = 9 headtemp := head for headtemp != nil { fmt.Print(headtemp.Val, "\t") headtemp = headtemp.Next } fmt.Println("刪除前") head = DeleteNode1(head, 1) headtemp = head for headtemp != nil { fmt.Print(headtemp.Val, "\t") headtemp = headtemp.Next } fmt.Println("刪除後,新增虛擬頭") } if true { head := &ListNode{} head.Val = 1 head.Next = &ListNode{} head.Next.Val = 5 head.Next.Next = &ListNode{} head.Next.Next.Val = 1 head.Next.Next.Next = &ListNode{} head.Next.Next.Next.Val = 9 headtemp := head for headtemp != nil { fmt.Print(headtemp.Val, "\t") headtemp = headtemp.Next } fmt.Println("刪除前") head = DeleteNode2(head, 1) headtemp = head for headtemp != nil { fmt.Print(headtemp.Val, "\t") headtemp = headtemp.Next } fmt.Println("刪除後,換頭法") } } // Definition for singly-linked list. type ListNode struct { Val int Next *ListNode } //新增虛擬頭,返回head.Next func DeleteNode1(head *ListNode, val int) *ListNode { //前一個節點 pre := &ListNode{} pre.Next = head //當前節點 cur := head //頭節點 head = pre for cur != nil { if cur.Val == val { //如果當前節點正好是刪除節點 pre.Next = cur.Next //前一個節點指向後一個節點 } else { pre = cur //不刪除,需要遍歷。當前節點變成前一個節點 } //下一個節點變成當前節點 cur = cur.Next } return head.Next } //換頭,返回head func DeleteNode2(head *ListNode, val int) *ListNode { //換頭 for head != nil && head.Val == val { head = head.Next } //當前節點 cur := head //前一個節點 var pre *ListNode = nil for cur != nil { if cur.Val == val { //如果當前節點正好是刪除節點 pre.Next = cur.Next //前一個節點指向後一個節點,pre節點不可能為空的 } else { pre = cur //不刪除,需要遍歷。當前節點變成前一個節點 } //下一個節點變成當前節點 cur = cur.Next } return head }
用 go test -v -test.run TestDeleteNode 命令,執行結果如下:
***
[評論](https://user.qzone.qq.com/3182319461/blog/1596754839)