Golang は効率的で簡潔なプログラミング言語であり、パフォーマンスと同時実行性に大きな利点があります。 Golang には、リストを含むコレクション データ構造の実装が多数あります。リストは、一連のデータを保存するために使用できる非常に重要なデータ構造であり、任意の場所での要素の挿入と削除をサポートします。この記事ではGolangを使ってListを実装する方法を紹介します。
リストはデータ構造であり、要素の順序付けされたコレクションです。リストでは、最初と最後の要素を除き、すべての要素に先行要素と後続要素があります。最初の要素には先行要素がなく、最後の要素には後続要素がありません。 List は、要素の追加、要素の削除、要素へのアクセスなど、いくつかの基本的な操作を提供します。
Golang では、List を実装するために二重リンク リストを使用できます。二重リンク リストには、最初のノードを指すポインタ ヘッドと最後のノードを指すポインタ テールが含まれます。各ノードには、前のノードを指すポインタ prev と次のノードを指すポインタ next に加えて、ノードの値を格納する値 val が含まれています。以下に示すように:
type ListNode struct {
prev *ListNode // 指向前一个节点 next *ListNode // 指向后一个节点 val interface{// 当前节点的值 }
}
type List struct {
head *ListNode // 指向第一个节点 tail *ListNode // 指向最后一个节点 len int // List的长度
}
List を実装する場合、Pay が必要です。次の点に注意してください。
(1) 要素の追加
リストに要素を追加するには、主にヘッダーに要素を追加する方法と、末尾に要素を追加する方法の 2 つがあります。これらは、AddFront メソッドと AddBack メソッドを使用して実装できます。
func (リスト *List) AddFront(val インターフェース{}) {
node := &ListNode{ prev: nil, next: list.head, val: val, } if list.head == nil { // 如果链表为空 list.head = node list.tail = node } else { list.head.prev = node list.head = node } list.len++
}
func (リスト *List) AddBack(val インターフェース{}) {
node := &ListNode{ prev: list.tail, next: nil, val: val, } if list.tail == nil { // 如果链表为空 list.head = node list.tail = node } else { list.tail.next = node list.tail = node } list.len++
}
(2) 要素の削除
要素の削除は、主にヘッダ要素の削除と末尾要素の削除の 2 つに分けられます。 RemoveFront メソッドと RemoveBack メソッドを使用して要素を削除することもできます。
func (リスト *List) RemoveFront() {
if list.head == nil { // 如果链表为空 return } if list.head == list.tail { // 如果链表只有一个元素 list.head = nil list.tail = nil list.len = 0 return } list.head = list.head.next list.head.prev = nil list.len--
}
func (リスト *List) RemoveBack() {
if list.tail == nil { // 如果链表为空 return } if list.head == list.tail { // 如果链表只有一个元素 list.head = nil list.tail = nil list.len = 0 return } list.tail = list.tail.prev list.tail.next = nil list.len--
}
(3) 要素へのアクセス
List 内の要素にアクセスするには、必要な要素が見つかるまで、テーブルの先頭または末尾から 1 つずつたどっていくだけです。 Front メソッドと Back メソッドを使用して、リストの最初と最後の要素にアクセスできます。
func (list *List) Front() インターフェース{} {
if list.head == nil { return nil } return list.head.val
}
func (list *List) Back() インターフェース{} {
if list.tail == nil { return nil } return list.tail.val
}
上記は Golang で List を実装する基本的な方法であり、実際のニーズに応じて調整および最適化できます。
Golang で List を実装するのは非常に簡単です。二重リンク リストを使用するだけです。 List は Golang の標準ライブラリに実装されているため、実際に使用する場合は標準ライブラリの List を使用することを推奨します。リストをカスタマイズする必要がある場合は、実際のニーズに応じて上記のコードを調整および最適化できます。
以上がgolang リストの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。