Go 언어의 단일 연결 리스트 구현 방법을 처음부터 배워 보세요
자료 구조와 알고리즘을 학습할 때, 단일 연결 리스트는 기본적이고 중요한 자료 구조 중 하나입니다. 이 글에서는 Go 언어를 사용하여 단일 연결 목록을 구현하는 방법을 소개하고, 특정 코드 예제를 통해 독자가 이 데이터 구조를 더 잘 이해할 수 있도록 돕습니다.
단일 연결 리스트는 일련의 노드로 구성된 선형 데이터 구조입니다. 각 노드에는 데이터와 다음 노드에 대한 포인터가 포함되어 있습니다. 마지막 노드의 포인터는 null을 가리킵니다.
단일 연결 목록은 일반적으로 삽입, 삭제, 검색을 포함한 여러 기본 작업을 지원합니다. 이제 이러한 작업을 단계별로 구현하겠습니다.
먼저 단일 연결 목록의 노드 구조를 정의해야 합니다.
type Node struct { data interface{} next *Node }
위 구조에서 data
필드는 노드의 데이터를 저장하는 데 사용됩니다. , next
필드는 다음 노드에 대한 포인터입니다. data
字段用于存储节点的数据,next
字段是指向下一个节点的指针。
接下来,我们需要定义一个LinkedList
LinkedList
구조를 정의해야 합니다. type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} }Insert nodeInsert at the head of a 단일 연결 목록 노드 방법:
func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } }Delete node지정된 데이터가 있는 노드를 삭제하는 방법:
func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } }Find node지정된 데이터가 있는 노드 구현 방법:
func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false }전체 예시다음은 전체 예시입니다. 샘플 코드는 단일 연결 목록 생성, 노드 삽입, 노드 삭제 및 노드 찾기 방법을 보여줍니다.
package main import "fmt" type Node struct { data interface{} next *Node } type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} } func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } } func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } } func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false } func main() { list := NewLinkedList() list.Insert(1) list.Insert(2) list.Insert(3) fmt.Println(list.Search(2)) // Output: true list.Delete(2) fmt.Println(list.Search(2)) // Output: false }요약 🎜🎜 위의 코드 예제를 통해 우리는 Go 언어를 사용하여 단일 연결 목록의 기본 작업을 구현하는 방법을 이해합니다. 목록. 단일 연결 목록의 구현 방법을 익힌 후 독자는 더욱 복잡한 데이터 구조 및 관련 알고리즘을 학습하여 컴퓨터 과학에 대한 이해와 응용을 심화할 수 있습니다. 이 글이 독자들에게 도움이 되었으면 좋겠습니다. 읽어주셔서 감사합니다! 🎜
위 내용은 Go 언어로 단일 연결 목록을 처음부터 구현하는 방법 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!