Golang은 단일 연결 목록을 구현합니다.

王林
풀어 주다: 2023-05-13 09:59:06
원래의
549명이 탐색했습니다.

단일 연결 리스트는 일련의 노드로 구성된 데이터 구조이며, 각 노드에는 데이터와 다음 노드에 대한 포인터가 포함됩니다. 단일 연결 리스트의 마지막 노드 포인터는 null이며, 이는 연결 리스트의 끝을 나타냅니다.

Golang에서는 구조를 사용하여 각 노드를 정의하고 포인터를 사용하여 다음 노드의 위치를 ​​나타낼 수 있습니다. 다음은 간단한 단일 연결 목록 구현입니다.

package main

import "fmt"

type Node struct {
    data int
    next *Node
}

type List struct {
    head *Node
}

func (l *List) Insert(val int) {
    newNode := &Node{data: val}

    if l.head == nil {
        l.head = newNode
    } else {
        last := l.Last()
        last.next = newNode
    }
}

func (l *List) Last() *Node {
    node := l.head

    for node.next != nil {
        node = node.next
    }

    return node
}

func (l *List) Traverse() {
    node := l.head

    for node != nil {
        fmt.Printf("%d ", node.data)
        node = node.next
    }

    fmt.Printf("
")
}

func main() {
    l := List{}

    for i := 0; i < 10; i++ {
        l.Insert(i)
    }

    l.Traverse()
}
로그인 후 복사

이 구현에서는 데이터와 다음 노드를 가리키는 다음 포인터가 포함된 노드 구조를 정의합니다. 리스트 구조는 전체 연결 리스트를 나타내며 첫 번째 노드를 가리키는 헤드 포인터를 포함합니다.

Insert 메소드는 연결된 목록에 값을 삽입하는 데 사용됩니다. 연결된 목록이 비어 있으면 새 노드를 직접 헤드로 설정하고, 그렇지 않으면 마지막 노드를 찾아 다음 포인터를 새 노드를 가리킵니다.

Last 메소드는 연결리스트의 마지막 노드를 반환합니다. 헤드부터 시작하여 마지막 노드를 찾을 때까지 전체 연결 리스트를 탐색합니다.

Traverse 메소드는 연결리스트 전체를 순회하여 연결리스트의 모든 요소를 ​​출력하는 데 사용됩니다.

메인 함수에서는 List 인스턴스를 생성하고 여기에 값을 삽입한 후 전체 연결된 목록을 순회하여 결과를 출력합니다.

위 구현은 단순한 예일 뿐이며 필요에 따라 확장 및 수정할 수 있습니다. 실제 개발에서 연결 목록을 작성할 때 코드의 견고성과 효율성을 보장하기 위해 메모리 누수 및 포인터 null 값 판단과 같은 문제에 주의를 기울여야 한다는 점은 주목할 가치가 있습니다.

위 내용은 Golang은 단일 연결 목록을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿