Skip to content

Commit e7c2c36

Browse files
committed
Add:增加数据结构代码
1 parent 9a04991 commit e7c2c36

File tree

9 files changed

+100
-0
lines changed

9 files changed

+100
-0
lines changed

.idea/go-design-patterns.iml

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datastruct/01-array/README.md

Whitespace-only changes.

datastruct/01-array/array.go

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package array
2+
3+
import "fmt"
4+
5+
type Array struct {
6+
Items []int32
7+
Length int32
8+
}
9+
10+
func NewArray(length int32, items ...int32) *Array {
11+
if int32(len(items)) > length {
12+
return nil
13+
}
14+
15+
newItems := make([]int32, length)
16+
for i := range len(items) {
17+
newItems[i] = items[i]
18+
}
19+
return &Array{Items: newItems, Length: length}
20+
}
21+
22+
func (arr *Array) Print() {
23+
for _, item := range arr.Items {
24+
fmt.Printf("%d,", item)
25+
}
26+
}

datastruct/01-array/array_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package array
2+
3+
import "testing"
4+
5+
func TestArray(t *testing.T) {
6+
7+
array := NewArray(10, 1, 2, 3)
8+
9+
array.Print()
10+
}
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package linked_list
2+
3+
import "fmt"
4+
5+
type Node struct {
6+
Val int32
7+
Next *Node
8+
}
9+
10+
func NewNode(val int32, next *Node) *Node {
11+
node := &Node{Val: val, Next: next}
12+
return node
13+
}
14+
15+
func (node *Node) InsertAfter(val int32) {
16+
node.Next = &Node{Val: val}
17+
}
18+
19+
func (node *Node) InsertBefore(val int32) {
20+
before := &Node{Val: val, Next: node}
21+
node = before
22+
}
23+
24+
func (node *Node) Delete(n *Node) {
25+
if n.Next != nil {
26+
node.Next = n.Next
27+
n = nil
28+
} else {
29+
node.Next = nil
30+
}
31+
}
32+
33+
func (node *Node) ReverseByIteration() {
34+
temp := node
35+
for temp != nil {
36+
37+
}
38+
39+
node = node.Next
40+
41+
}
42+
43+
func (node *Node) Print() {
44+
fmt.Printf("%d -> ", node.Val)
45+
46+
if node.Next != nil {
47+
node = node.Next
48+
node.Print()
49+
}
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package linked_list
2+
3+
import "testing"
4+
5+
func TestLinkedList(t *testing.T) {
6+
linkedList := NewNode(1, NewNode(2, nil))
7+
linkedList.Print()
8+
}

datastruct/03-stack/stack.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package stack

datastruct/04-queue/queue.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package _4_queue

datastruct/go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module datastruct
2+
3+
go 1.23.3

0 commit comments

Comments
 (0)