골랑 링크드 리스트 | 데이터 구조

2542 단어 golinkedlist

연결 목록이란 무엇입니까?



연결 목록은 선형 데이터 구조이지만 배열이나 조각과 같은 연속 메모리 주소가 없습니다. 연결 목록은 본질적으로 동적입니다.

Golang 배열에서 우리는 선언하는 동안 배열의 크기를 제공해야 합니다. golang의 슬라이스는 후드 아래에서 배열을 사용합니다.

연결 목록은 동적 데이터 구조로 저장된 데이터에 대해서만 메모리를 차지합니다.

Golang 연결 목록 노드 구조체




type node struct {
    data int
    next *node
}


Node Struct에는 데이터를 포함하는 정수 유형의 두 필드와 다음 노드의 메모리 주소를 보유하는 "next"필드가 있습니다.

Golang 주요 기능




node := &node{data: 20}


노드 구조체는 위의 코드(메인 함수)에서 앰퍼샌드 기호로 초기화됩니다. 이는 노드 변수가 연결 목록에서 이 노드를 연결하는 푸시백 메서드로 전달되기 때문입니다.

type linkedList struct {
    length int
    head   *node
    tail   *node
}


Linked List Struct에는 목록의 길이, 헤드 노드 및 테일 노드가 포함됩니다.

연결 목록 구조의 길이 필드는 연결 목록의 길이를 저장합니다.

Node Type의 Head 필드는 헤드의 메모리 주소 또는 연결 리스트의 첫 번째 노드를 저장합니다.

Node 유형의 Linked list에 있는 tail 필드에는 연결 목록에 있는 마지막 노드의 메모리 주소가 저장되어 있습니다.

Main Function의 Linked List 구조체 초기화
주요 기능list := linkedList{}
연결 목록의 길이
연결 목록의 Golang 길이

func (l linkedList) Len() int {
    return l.length
}


이 메서드는 연결 목록의 길이를 반환합니다.

Golang 연결 목록 표시

func (l linkedList) Display() {
    for l.head != nil {
        fmt.Printf("%v -> ", l.head.data)
        l.head = l.head.next
    }
    fmt.Println()
}


연결 목록을 인쇄하려면 연결 목록의 헤드가 루프가 종료될 때 nil이 될 때 전체 연결 목록을 순회해야 합니다.

Golang 연결 목록 푸시백




func (l *linkedList) PushBack(n *node) {
    if l.head == nil {
        l.head = n
        l.tail = n
        l.length++
    } else {
        l.tail.next = n
        l.tail = n
        l.length++
    }
}


PushBack 메서드는 노드를 입력으로 받아 연결 목록에 연결합니다.

연결 목록이 비어 있으면 들어오는 노드를 첫 번째 노드로 만들고 머리와 꼬리 모두 해당 노드를 가리키기 시작합니다. 연결 리스트의 길이가 1 증가합니다.

헤드 노드가 이미 존재하면 else 부분이 실행되고 테일 노드의 다음 필드는 들어오는 노드의 메모리 주소를 저장하고 테일은 노드를 가리키기 시작합니다.

푸시백 기능에 대한 주요 기능 코드입니다.




list.PushBack(node)


더 읽어보기... https://divyanshushekhar.com/golang-linked-list/

좋은 웹페이지 즐겨찾기