더북(TheBook)

container/list

container/list는 더블 링크드 리스트(double linked list) 자료구조를 구현한 패키지이다. 각 노드는 자신의 앞 노드와 뒤 노드를 가리키고 있어서 슬라이스보다 훨씬 자유롭게 리스트 내부의 요소를 다룰 수 있다.

InsertAfter(), InsertBefore() 메서드로는 리스트 중간에 요소를 삽입할 수 있다. MoveToBack(), MoveToFront() 메서드로는 요소의 위치를 이동시킬 수 있다. PushFront(), PushBack() 메서드로는 리스트의 앞 또는 뒤에 요소를 추가할 수 있다. PushFrontList(), PushBackList() 메서드로는 리스트 두 개를 연결할 수 있다.

다음 예제를 살펴보자.

items := list.New()
for _, x := range strings.Split("ABCDEFGH", "") {
    items.PushBack(x)
}
e := items.PushFront(0)
items.InsertAfter(1, e)
 
for element := items.Front(); element != nil; element = element.Next() {
    fmt.Printf("%v ", element.Value) // 0 1 A B C D E F G H
}

PushBack() 메서드를 사용하여 리스트에 문자 여덟 개를 추가했고, 리스트의 앞부분에 0을 추가했다. 숫자 1은 InsertAfter() 메서드를 사용하여 숫자 0 다음에 삽입했다. 그리고 리스트의 첫 번째 요소부터 각 요소를 순회하여 값을 출력했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.