[태그:] study

  • GO-linked list와 array

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

error: Content is protected !!