泛型类型代码

package main

import (
	"fmt"
)

// List 表示一个可以保存任何类型的值的单链表。
type List[T any] struct {
	next *List[T]
	val  T
}

// Add 添加一个新节点到链表的末尾
func (list *List[T]) Add(val T) {
	newNode := &List[T]{val: val}
	if list.next == nil {
		list.next = newNode
	} else {
		curr := list.next
		for curr.next != nil {
			curr = curr.next
		}
		curr.next = newNode
	}
}

// Delete 删除第一个匹配的节点
func (list *List[T]) Delete(val T) {
	if list.next == nil {
		return
	}
	if list.next.val == val {
		list.next = list.next.next
		return
	}
	curr := list.next
	for curr.next != nil && curr.next.val != val {
		curr = curr.next
	}
	if curr.next != nil {
		curr.next = curr.next.next
	}
}

// Search 查找链表中是否包含某个值
func (list *List[T]) Search(val T) bool {
	curr := list.next
	for curr != nil {
		if curr.val == val {
			return true
		}
		curr = curr.next
	}
	return false
}

// Display 显示链表中的所有值
func (list *List[T]) Display() {
	curr := list.next
	for curr != nil {
		fmt.Printf("%v -> ", curr.val)
		curr = curr.next
	}
	fmt.Println("nil")
}

func main() {
	list := &List[int]{}
	list.Add(1)
	list.Add(2)
	list.Add(3)
	list.Display() // 输出: 1 -> 2 -> 3 -> nil

	fmt.Println(list.Search(2)) // 输出: true
	fmt.Println(list.Search(4)) // 输出: false

	list.Delete(2)
	list.Display() // 输出: 1 -> 3 -> nil
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值