golangでリンクリストを実装する方法

小老鼠
リリース: 2023-12-14 16:37:31
オリジナル
1127 人が閲覧しました

リンク リストを実装する方法: 1. リンク リストのノードを表す Node 構造を定義します。各ノードにはデータ項目と次のノードへのポインターが含まれます。2. LinkedList 構造を定義して、リンク リスト自体 (リンク リストのヘッド ノードへのポインタを含む) 3. 2 つのメソッドが実装されており、append はリンク リストの末尾にノードを挿入するために使用され、printList はリンク リストの要素を出力するために使用されます。 list; 4. このようにして、Go 言語の構造体とポインターを使用して、リンク リストの基本機能を実装できます。

golangでリンクリストを実装する方法

このチュートリアルのオペレーティング システム: Windows 10 システム、go1.20.1 バージョン、Dell G3 コンピューター。

Go 言語では、構造体とポインターを使用してリンク リストを実装できます。以下は、Go 言語で単純な一方向リンク リストを実装する方法を示す簡単な例です。

package main
import "fmt"
// 定义链表节点
type Node struct {
    data int
    next *Node
}
// 定义链表
type LinkedList struct {
    head *Node
}
// 在链表末尾插入节点
func (list *LinkedList) append(data int) {
    newNode := &Node{data: data, next: nil}
    if list.head == nil {
        list.head = newNode
        return
    }
    lastNode := list.head
    for lastNode.next != nil {
        lastNode = lastNode.next
    }
    lastNode.next = newNode
}
// 打印链表元素
func (list *LinkedList) printList() {
    currentNode := list.head
    for currentNode != nil {
        fmt.Printf("%d -> ", currentNode.data)
        currentNode = currentNode.next
    }
    fmt.Println("nil")
}
func main() {
    // 创建链表
    var list LinkedList
    list.append(1)
    list.append(2)
    list.append(3)
    // 打印链表
    list.printList()
}
ログイン後にコピー

上の例では、最初にリンク リストのノードを表す Node 構造を定義します。各ノードにはデータ項目と次のノードへのポインターが含まれています。次に、リンク リスト自体を表す LinkedList 構造体を定義します。これには、リンク リストのヘッド ノードへのポインターが含まれます。 2 つのメソッドを実装しました。append はリンク リストの最後にノードを挿入するために使用され、printList はリンク リストの要素を印刷するために使用されます。

このようにして、Go 言語の構造とポインターを使用して、リンク リストの基本機能を実装できます。もちろん、これは単純な例にすぎず、実際のリンク リストは二重リンク リストや循環リンク リストなど、より複雑になる可能性があります。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!