66 lines
1.1 KiB
Go
66 lines
1.1 KiB
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func main() {
|
|
|
|
}
|
|
func removeNthFromEnd(head *ListNode, n int) *ListNode {
|
|
if head.Next == nil && n == 1 {
|
|
return nil
|
|
}
|
|
firstNode := (*ListNode)(nil)
|
|
result := (*ListNode)(nil)
|
|
preNode := (*ListNode)(nil)
|
|
for head != nil {
|
|
fmt.Printf("1----")
|
|
if preNode != nil {
|
|
fmt.Printf("preNode:%d|", preNode.Val)
|
|
if firstNode == nil {
|
|
firstNode = preNode
|
|
result = preNode
|
|
} else {
|
|
result.Next = preNode
|
|
result = result.Next
|
|
}
|
|
}
|
|
tmp := head
|
|
tmp2 := &ListNode{Val: tmp.Val}
|
|
value := 0
|
|
for i := 0; i < n; i++ {
|
|
if tmp.Next != nil {
|
|
tmp = tmp.Next
|
|
value++
|
|
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
fmt.Printf("%d", value)
|
|
if value == n-1 {
|
|
fmt.Printf("找到,")
|
|
preNode = nil
|
|
head = head.Next
|
|
continue
|
|
}
|
|
preNode = tmp2
|
|
head = head.Next
|
|
}
|
|
if preNode != nil {
|
|
fmt.Printf("preNode:%d|", preNode.Val)
|
|
if firstNode == nil {
|
|
firstNode = preNode
|
|
result = preNode
|
|
} else {
|
|
result.Next = preNode
|
|
result = result.Next
|
|
}
|
|
}
|
|
return firstNode
|
|
}
|