韩槑槑

LeetCode 常用结构之 链表

字数统计: 275阅读时长: 1 min
2018/12/02 Share

常用的数据结构

LeetCode 刷题的时候有几个常见的数据结构
其中最常用的是 链表
所以我把这两个数据结构单独写了两个包
上篇文章已经介绍了树
这篇文章说链表

代码仓库:https://github.com/Han-MeiM/leetCode/tree/master/structure

树结构

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
52
package ListNode

import (
"fmt"
"strconv"
"strings"
)

type ListNode struct {
Val int
Next *ListNode
}

func CreateTestData(data string) *ListNode {
if data == "[]" {
return nil
}
data = string([]rune(data)[1 : len(data)-1])
res := strings.Split(data, ",")
length := len(res)
listNode := make([]ListNode, length)
headVal, err := strconv.Atoi(res[0])
if err != nil {
panic(err)
}
listNode[0] = ListNode{headVal, nil}
for i := 1; i < length; i++ {
headVal, _ = strconv.Atoi(res[i])
listNode[i] = ListNode{headVal, nil}
listNode[i-1].Next = &listNode[i]
}
return &listNode[0]
}

func Print(listNode *ListNode) {
if listNode == nil {
fmt.Println(nil)
}
var buffer strings.Builder
buffer.WriteString("[")
value := strconv.Itoa(listNode.Val)
buffer.WriteString(value)
temp := listNode.Next
for temp != nil {
buffer.WriteString(",")
value = strconv.Itoa(temp.Val)
buffer.WriteString(value)
temp = temp.Next
}
buffer.WriteString("]")
fmt.Println(buffer.String())
}

使用

1.创建链表结构

1
2
// 注意不要有空格
list := ListNode.CreateTestData("[1,2,3,4]")

2.打印树结构

1
ListNode.Print(list)

3.效果
file


CATALOG
  1. 1. 常用的数据结构
  2. 2. 树结构
  3. 3. 使用