Go 言語では、リンク リスト要素の削除は基本的な操作です。リンク リストの構造は、配列のようにインデックスを使用して直接操作することができないため、リンク リスト内で削除する必要がある要素を見つけて、リンク リストから削除する必要があります。
この記事では、Go言語を使ってリンクリストの要素を削除する方法の基本操作を紹介します。
Go 言語では、一連の構造とポインターを通じてリンク リストを実装できます。通常、リンク リスト内の単一の要素を表すためにノード構造を使用します。
type ListNode struct {
Val int Next *ListNode
}
この構造体には、2 つのメンバー変数 Val と Next が含まれています。 Val はノードの実際の値、Next は次のノードへのポインタです。
リンク リスト内の要素の削除は 3 つの手順に分けることができます。まず、削除する必要がある要素を見つける必要があります。次に、その要素へのポインターを更新して、次の要素を指すようにする必要があります。最後に、リンクされたリストから削除する必要がある要素を削除します。
func deleteNode(head ListNode, val int) ListNode {
// 如果是删除头节点,直接返回下一个节点作为新的头节点 if head.Val == val { return head.Next } // 定义两个指针用于遍历链表 pre, cur := head, head.Next for cur != nil { if cur.Val == val { // 删除当前节点 pre.Next = cur.Next break } // 将指针移动到下一个节点 pre, cur = cur, cur.Next } return head
}
この関数では、2 つのポインター pre と cur を使用してトラバースします。リンクされたリスト。削除する必要があるノードが見つかった場合、そのノードへのポインタが次のノードを指すように更新されます。
以下は完全なコード例です。これには、リンク リストを定義する構造と、リンク リスト要素を削除する関数が含まれています。
func deleteNode(head ListNode, val int) ListNode {
// 如果是删除头节点,直接返回下一个节点作为新的头节点 if head.Val == val { return head.Next } // 定义两个指针用于遍历链表 pre, cur := head, head.Next for cur != nil { if cur.Val == val { // 删除当前节点 pre.Next = cur.Next break } // 将指针移动到下一个节点 pre, cur = cur, cur.Next } return head
}
type ListNode struct {
Val int Next *ListNode
}
func main() {
// 创建一个链表 l1 := &ListNode{1, nil} l2 := &ListNode{2, nil} l3 := &ListNode{3, nil} l4 := &ListNode{4, nil} l5 := &ListNode{5, nil} l1.Next = l2 l2.Next = l3 l3.Next = l4 l4.Next = l5 // 删除链表元素 head := deleteNode(l1, 3) // 打印链表 for head != nil { fmt.Println(head.Val) head = head.Next }
}
上記の例では、5 つの要素を含むリンク リストを作成しました。次に、deleteNode() 関数を使用して、リンク リストから値 3 の要素を削除します。最後に、リンクされたリスト全体を反復処理し、各要素の値を出力します。
以上がGo言語を使用してリンクリスト要素を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。