https://go.dev/play/ 로 들어가면 go 언어로 테스트 해볼 수 있다.
이건 단방향 노드 링크드 리스트 코드인데, 테스트 해봤음. 그래프의 일종이다.
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
type Node[T any] struct {
next *Node[T]
val T
}
func main() {
root := &Node[int]{nil, 10}
root.next = &Node[int]{nil, 20}
root.next.next = &Node[int]{nil, 30}
for n := root; n != nil; n = n.next {
fmt.Printf("node val: %d\n", n.val)
}
}
양방향으로 추가하려면 next뿐만 아니라 prev도 존재해야 한다. root 설정도 미리 해둬야 하고, prev는 root next는 새로운 노드 값으로 설정하는 것.
해당 관련해서는 나중에 따로 정리해야 할 듯.
이 부분은 새로운 숫자를 중간에 추가해주어야 할 때. array 로 만들고 중간에 넣으려고 하면 다음과 같이 뒷 부분은 따로 저장해서 넣어야 하는 단점이 있음.
package main
import "fmt"
func main() {
var a [10]int = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
var b [11]int
copy(b[0:], a[0:5])
b[5] = 1234
copy(b[6:], a[5:])
fmt.Println(a)
fmt.Println(b)
}