Golang リンク リストの基本原則と手法を理解して適用する
Golang リンク リスト実装の基本原則と方法
リンク リストは一般的なデータ構造であり、一連のノードで構成されており、各ノードにはデータとデータが含まれています。次のノードへのポインタ。各ノードは相互に接続されて、順序付きリンク リストを形成します。 Golangでは構造体とポインタを利用してリンクリストを実装することができますが、以下ではリンクリストの基本原理と手法を詳しく紹介し、具体的なコード例を添付します。
リンク リストの基本構造
まず、リンク リスト ノードの構造を定義する必要がありますが、Golang ではその構造を使用してこれを実現できます。
type ListNode struct { Val int // 节点存储的数据 Next *ListNode // 指向下一个节点的指针 }
リンク リストの基本操作
リンク リストでの一般的な操作には、挿入、削除、検索などがあります。以下では、これらの操作の具体的な実装を 1 つずつ紹介します。
- 挿入操作
リンクリストの挿入操作は、リンクリストの先頭に挿入する場合とリンクリストの途中に挿入する場合の2つに分けられます。リスト。挿入操作の具体的な実装は次のとおりです。
func Insert(head *ListNode, val int) *ListNode { newNode := &ListNode{ Val: val, Next: nil, } if head == nil { return newNode } newNode.Next = head return newNode }
リンク リストの先頭に挿入する場合、新しいノードの Next ポインタを元のリンク リストの先頭ノードにポイントするだけで済みます。新しいノードを新しいヘッド ノードとして返します。
- 削除操作
リンク リストの削除操作は、リンク リスト内の指定されたノードを削除する場合と、指定されたノードを持つノードを削除する場合の 2 つの状況に分けることもできます。リンクされたリストの値。削除操作の具体的な実装は次のとおりです。
func DeleteNode(head *ListNode, target int) *ListNode { dummy := &ListNode{} dummy.Next = head cur := dummy for cur != nil && cur.Next != nil { if cur.Next.Val == target { cur.Next = cur.Next.Next } else { cur = cur.Next } } return dummy.Next }
リンク リスト内の指定されたノードを削除する場合、現在のノードの Next ポインターを次のノードの Next ポインターにポイントするだけで済みます。
- 検索操作
リンク リストの検索操作は、リンク リストに特定の値が存在するかどうかを判断するためによく使用されます。検索操作の具体的な実装は次のとおりです:
func Search(head *ListNode, target int) bool { cur := head for cur != nil { if cur.Val == target { return true } cur = cur.Next } return false }
リンクされたリストの各ノードを走査し、ノード値がターゲット値と等しいかどうかを判断できます。等しい場合は true を返し、それ以外の場合は走査を継続します。リンクされたリストの終わり。
リンク リストのトラバーサル操作
リンク リストのトラバーサル操作は、リンク リストを印刷したり、リンク リストの長さを取得したりするためによく使用されます。トラバーサル操作の具体的な実装は次のとおりです。
func Traverse(head *ListNode) { cur := head for cur != nil { fmt.Println(cur.Val) cur = cur.Next } } func Length(head *ListNode) int { count := 0 cur := head for cur != nil { count += 1 cur = cur.Next } return count }
ポインタを継続的に移動することでリンク リストの各ノードにアクセスし、対応する操作を実行できます。
以上がGolangのリンクリスト実装の基本原理と実装方法であり、リンクリストを構築するノードの構造とポインタを定義することで、挿入、削除、検索、走査などの操作が実現されます。これらの操作により、リンク リスト内のデータを柔軟に処理し、さらに複雑な機能を実装することができます。この記事がリンク リストの原理と方法を理解するのに役立つことを願っています。
以上がGolang リンク リストの基本原則と手法を理解して適用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











単一リンクされたリストと入力として正の整数 N が与えられます。目標は、再帰を使用して、指定されたリストの末尾から N 番目のノードを見つけることです。入力リストにノード a→b→c→d→e→f があり、N が 4 の場合、最後から 4 番目のノードは c になります。まず、リスト内の最後のノードまでトラバースし、再帰的 (バックトラッキング) 増分カウントから戻るときにスキャンします。 count が N に等しい場合、現在のノードへのポインタが結果として返されます。このためのさまざまな入出力シナリオを見てみましょう - 入力 - リスト: -1→5→7→12→2→96→33N=3 出力 - 最後から N 番目のノードは: 2 説明 - 3 番目のノードは 2 です。入力 - リスト: -12→53→8→19→20→96→33N=8 出力 - ノードが存在しません

配列とリンク リストのアルゴリズムの時間計算量の比較: 配列 O(1) へのアクセス、リンク リスト O(n)、配列 O(1) の挿入、配列 O(1) の削除。 )、リンク リスト O(n) (n); 検索配列 O(n)、リンク リスト O(n)。

数値のリンク リスト表現は次のように提供されます。リンク リストのすべてのノードは、数値の 1 桁とみなされます。ノードは、リンク リストの最初の要素が数値の最上位桁を保持し、リンク リストの最後の要素が数値の最下位桁を保持するように数値を格納します。たとえば、数値 202345 は、リンク リストでは (2->0->2->3->4->5) として表されます。数値を表すこのリンク リストに 1 を追加するには、リスト内の最下位ビットの値をチェックする必要があります。 9 より小さい場合は問題ありませんが、それ以外の場合はコードによって次の番号などが変更されます。次に、これを行う方法を理解するための例を見てみましょう。1999 年は (1->9->9->9) として表され、1 を追加すると変更されます。

PHPSPL データ構造ライブラリの概要 PHPSPL (標準 PHP ライブラリ) データ構造ライブラリには、さまざまなデータ構造を保存および操作するためのクラスとインターフェイスのセットが含まれています。これらのデータ構造には、配列、リンク リスト、スタック、キュー、セットが含まれており、それぞれがデータを操作するためのメソッドとプロパティの特定のセットを提供します。配列 PHP では、配列は一連の要素を格納する順序付けされたコレクションです。 SPL 配列クラスは、ソート、フィルタリング、マッピングなどのネイティブ PHP 配列の拡張機能を提供します。 SPL 配列クラスの使用例を次に示します。 useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

リンク リストは、データとポインターを含む一連のノードを使用して要素を編成するデータ構造であり、大規模なデータ セットや頻繁な挿入/削除操作の処理に特に適しています。その基本コンポーネントには、ノード (データと次のノードへのポインター) とヘッド ノード (リンク リストの最初のノードを指す) が含まれます。一般的なリンク リスト操作には、追加 (末尾の挿入)、削除 (特定の値)、および走査が含まれます。

LinkedList は一連のノードで構成される一般的なデータ構造であり、各ノードにはデータ フィールド (Data) とポインター フィールド (Next) という 2 つのキー属性が含まれています。このうち、データフィールドは実際のデータを格納するために使用され、ポインタフィールドは次のノードを指します。このように、リンク リストは、さまざまなアプリケーション シナリオに適した柔軟な方法でデータを保存します。 Go 言語では、リンク リスト構造も十分にサポートされています。 Cont は Go の組み込み標準ライブラリで提供されます

Python では、リンク リストは一連のノードで構成される線形データ構造であり、各ノードには値とリンク リスト内の次のノードへの参照が含まれます。この記事では、Python でリンク リストの最初と最後の位置に要素を追加する方法について説明します。 Python の LinkedList リンク リストは、要素のセットを格納するために使用される参照データ構造です。これはある意味配列に似ていますが、配列ではデータは連続したメモリ位置に格納されますが、リンク リストではデータはこの条件の影響を受けません。これは、データが順番にメモリに保存されるのではなく、ランダムにメモリに保存されることを意味します。これにより、どうやってできるのかという疑問が生じます

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