不多BB,直接上代码,有关链表定义,请自行百度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package main

import "fmt"

type ListNode struct {
Val interface{}
Next *ListNode
}

// 初始化
func New() *ListNode {
return &ListNode{nil, nil}
}

// 遍历输出
func (head *ListNode) Traverse() {
point := head
fmt.Println("--------start----------")
for nil != point {
fmt.Println(point.Val)
point = point.Next
}
fmt.Println("--------end----------")
}

// 插入
func (head *ListNode) Insert(val int) {
p := head
for p.Next != nil {
p = p.Next // 位移至尾节点
}
s := &ListNode{Val: val}
p.Next = s
if p.Val == nil { // 插入时发现首节点为空时前移
p.Val = p.Next.Val
p.Next = p.Next.Next
}
}



func main() {
linkedList := New()
linkedList.Insert(1)
linkedList.Insert(2)
linkedList.Traverse()
// --------start----------
// 1
// 2
// --------end----------
}