PHpullh
학습 라이브러리/Go/링크드 리스트 (container/list)

GO · 컬렉션

링크드 리스트 (container/list)

container/list는 이중 연결 리스트를 제공합니다. O(1) 삽입/삭제가 필요할 때 사용합니다.

컬렉션중급listlinked-listcontainerdoubly-linked

핵심 설명

container/list는 이중 연결 리스트를 제공합니다. O(1) 삽입/삭제가 필요할 때 사용합니다.

Go code

package main

import (
	"container/list"
	"fmt"
)

func main() {
	l := list.New()

	// 삽입
	l.PushBack("두 번째")
	front := l.PushFront("첫 번째")
	l.PushBack("세 번째")
	l.InsertAfter("사이에", front)

	// 순회
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Println(e.Value)
	}

	// 역순 순회
	fmt.Println("--- 역순 ---")
	for e := l.Back(); e != nil; e = e.Prev() {
		fmt.Println(e.Value)
	}

	// 삭제
	l.Remove(front)
	fmt.Println("길이:", l.Len())
}

학습 팁

리스트 원소의 Valueany 타입입니다. 타입 안전성이 필요하면 제네릭 래퍼를 만드세요.

주의할 점

이미 삭제된 원소에 Next()를 호출하면 예상치 못한 동작이 발생합니다. 삭제된 원소를 참조하지 마세요.

자주 묻는 질문

링크드 리스트 (container/list)란 무엇인가요?

container/list 는 이중 연결 리스트를 제공합니다. O(1) 삽입/삭제가 필요할 때 사용합니다.

링크드 리스트 (container/list) 학습 시 주의할 점은 무엇인가요?

이미 삭제된 원소에 Next() 를 호출하면 예상치 못한 동작이 발생합니다. 삭제된 원소를 참조하지 마세요.