0、main 函数测试
package main
import (
"important_test/data_structer/linkList"
"fmt"
)
func main() {
var s = []interface{}{25, 25, 25, 25, 27, 28, 29, 30}
link := linkList.SliceToList(s)
fmt.Println(link.ToString())
link.NormalRemove(25)
fmt.Println(link.ToString())
}
//leetcode题解递归法
type ListNode struct {
Val int
Next *ListNode
}
func removeElements(head *ListNode, val int) *ListNode {
if head == nil {
return nil
}
head.Next = removeElements(head.Next, val)
if head.Val == val {
return head.Next
} else {
return head
}
}
1、 使用普通删除法 带虚拟头节点
//正常去除节点
func (this *LinkList) NormalRemove(elem interface{}) {
prev := this.dummyHead
for prev.Next != nil {
cur := prev.Next
fmt.Println(cur.Elem)
if cur.Elem != elem {
prev = prev.Next
}
prev.Next = cur.Next
}
return
}
2、递归法
func (this *LinkList) RemoveRepeat(val interface{}) {
this.RecursiveRemove(this.dummyHead, val)
}
//递归法Remove链表中重复的值
func (this *LinkList) RecursiveRemove(head *node, elem interface{}) *node {
if head == nil {
return nil
}
head.Next = this.RecursiveRemove(head.Next, elem)
if head.Elem == elem {
return head.Next
} else {
return head
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于