Golang は単一リンクリストを実装します

王林
リリース: 2023-05-13 09:59:06
オリジナル
563 人が閲覧しました

単一リンク リストは一連のノードで構成されるデータ構造であり、各ノードにはデータと次のノードへのポインターが含まれます。単一リンク リストの最後のノードのポインタは 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート