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 サイトの他の関連記事を参照してください。

ホット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)

ホットトピック











Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

現在のGOプログラミングエコシステムにおけるGOフレームワークのオーディエンスステータスの分析では、開発者はビジネスニーズを満たすために適切なフレームワークを選択することに直面しています。今日私たち...

go言語でのinit()関数の実行順序は、goプログラミングで、init()関数は特別な関数であり、パッケージの初期化時に必要な関数を実行するために使用されます...

GO言語で効率的なキー価値ペアストレージを実装する正しい方法GO言語でRedisと同様のキー値ペアメモリを開発するときに最高のパフォーマンスを実現する方法...

GOスライシングインデックスの国境を越えた問題の調査:GOの単一エレメントスライス傍受、スライスは、配列などに使用できる柔軟なデータ構造です...
