単一リンク リストは一連のノードで構成されるデータ構造であり、各ノードにはデータと次のノードへのポインターが含まれます。単一リンク リストの最後のノードのポインタは 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() }
この実装では、データと次のノードを指す次のポインタを含む Node 構造を定義します。 List 構造はリンクされたリスト全体を表し、最初のノードを指すヘッド ポインターが含まれています。
Insert メソッドは、リンク リストに値を挿入するために使用されます。リンクされたリストが空の場合は、新しいノードをヘッドとして直接設定します。それ以外の場合は、最後のノードを見つけて、その次のポインタが新しいノードを指します。
Last メソッドは、リンクされたリストの最後のノードを返します。先頭から開始して、最後のノードが見つかるまでリンク リスト全体をたどります。
Traverse メソッドは、リンク リスト全体を走査し、リンク リスト内のすべての要素を出力するために使用されます。
main 関数では、List インスタンスを作成し、そこに値を挿入し、リンクされたリスト全体を走査して結果を出力します。
上記の実装は単なる単純な例であり、独自のニーズに応じて拡張および変更できます。なお、実際の開発においては、リンクリストを記述する際には、コードの堅牢性や効率性を確保するために、メモリリークやポインタのnull値判定などの問題に注意する必要があります。
以上がGolang は単一リンクリストを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。