ホームページ > バックエンド開発 > Golang > Go 言語で単一リンクリストを一から実装する方法を学ぶ

Go 言語で単一リンクリストを一から実装する方法を学ぶ

PHPz
リリース: 2024-03-22 09:15:04
オリジナル
910 人が閲覧しました

Go 言語で単一リンクリストを一から実装する方法を学ぶ

Go言語での単連結リストの実装方法をゼロから学ぼう

データ構造やアルゴリズムを学ぶ上で、単連結リストは基本的かつ重要なデータ構造の一つです。 。この記事では、Go 言語を使用して単一リンク リストを実装する方法を紹介し、具体的なコード例を通じて読者がこのデータ構造をより深く理解できるようにします。

単一リンク リストとは

単一リンク リストは、一連のノードで構成される線形データ構造です。各ノードにはデータと次のノードへのポインタが含まれています。最後のノードのポインタは null を指しています。

単一リンク リストの基本操作

単一リンク リストは通常​​、挿入、削除、検索などのいくつかの基本操作をサポートします。ここで、これらの操作を段階的に実装していきます。

ノード構造の作成

まず、単一リンク リストのノード構造を定義する必要があります。

type Node struct {
    データ インターフェース{}
    次の *ノード
}
ログイン後にコピー

上記の構造では、data フィールドはノードのデータを格納するために使用され、next フィールドは次のノードへのポインターです。

リンク リストを初期化する

次に、単一リンク リストを表す LinkedList 構造を定義し、いくつかの基本的な操作メソッドを提供する必要があります。タイプ LinkedList struct { ヘッド・ノード } func NewLinkedList() *LinkedList { &LinkedList を返す{} }

Insert node
ログイン後にコピー

単一リンク リストの先頭にノードを挿入する実装メソッド:

func (list *LinkedList) Insert(データ インターフェース{}) { newNode := &Node{データ: データ} if list.head == nil { list.head = 新しいノード } それ以外 { newNode.next = list.head list.head = 新しいノード } }

ノードの削除
ログイン後にコピー

指定したデータを持つノードの削除を実装するメソッド:

func (list *LinkedList) Delete(data Interface{}) { if list.head == nil { 戻る } if list.head.data == データ { list.head = list.head.next 戻る } 前 := リスト.ヘッド 現在の := list.head.next 現在の != nil { if current.data == データ { 前.次 = 現在.次 戻る } 前 = 現在 現在 = 現在.次 } }

ノードの検索
ログイン後にコピー

指定されたデータを持つノードの検索を実装するメソッド:

func (list *LinkedList) Search(データ インターフェース{}) bool { 現在の := リスト.ヘッド 現在の != nil { if current.data == データ { trueを返す } 現在 = 現在.次 } falseを返す }

完全な例
ログイン後にコピー

次は、単一リンク リストの作成、ノードの挿入、ノードの削除、およびノー​​ドの検索方法を示す完全なコード例です。

パッケージメイン

「fmt」をインポートします

タイプ ノード構造体 {
    データ インターフェース{}
    次の *ノード
}

タイプ LinkedList struct {
    ヘッド・ノード
}

func NewLinkedList() *LinkedList {
    &LinkedList を返す{}
}

func (list *LinkedList) Insert(データ インターフェース{}) {
    newNode := &Node{データ: データ}
    if list.head == nil {
        list.head = 新しいノード
    } それ以外 {
        newNode.next = list.head
        list.head = 新しいノード
    }
}

func (list *LinkedList) Delete(データ インターフェース{}) {
    if list.head == nil {
        戻る
    }

    if list.head.data == データ {
        list.head = list.head.next
        戻る
    }

    前 := リスト.ヘッド
    現在の := list.head.next

    現在の != nil {
        if current.data == データ {
            前.次 = 現在.次
            戻る
        }

        前 = 現在
        現在 = 現在.次
    }
}

func (list *LinkedList) Search(データ インターフェース{}) bool {
    現在の := リスト.ヘッド
    現在の != nil {
        if current.data == データ {
            trueを返す
        }
        現在 = 現在.次
    }
    falseを返す
}

関数 main() {
    リスト := NewLinkedList()
    
    リスト.挿入(1)
    リスト.挿入(2)
    リスト.挿入(3)
    
    fmt.Println(list.Search(2)) // 出力: true
    
    リストの削除(2)
    
    fmt.Println(list.Search(2)) // 出力: false
}
ログイン後にコピー

引き続き

# 上のコード例を通じて、Go を使用して単一テーブルの基本的な操作をどのように実行するかを理解しました。データ構造と関連する計算法は、コンピュータ科学の理解と応用をさらに深めます。

以上がGo 言語で単一リンクリストを一から実装する方法を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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