GO LanguageProgramming

GO-linked list와 array

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)
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다