단일 연결 리스트는 일련의 노드로 구성된 데이터 구조이며, 각 노드에는 데이터와 다음 노드에 대한 포인터가 포함됩니다. 단일 연결 리스트의 마지막 노드 포인터는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!