首页 > 其他分享 >泛型类型代码

泛型类型代码

时间:2024-07-19 16:54:19浏览次数:9  
标签:curr nil val List 代码 list next 类型 泛型

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
}

标签:curr,nil,val,List,代码,list,next,类型,泛型
From: https://blog.csdn.net/weixin_63566388/article/details/140554585

相关文章

  • # 代码实践篇四 如何切割曲面或求平面与曲面的交?
    代码实践篇四如何切割曲面或求平面与曲面的交?简述思路借助CGAL几何库,分为以下步骤:曲面为surfacemesh类型,因为要polygonprocessing接口,其他格式可以用copy_face_graph转换;split用于分割,clip用于切割,剩余部分和clipper的方向有关;slicer用的是AABB_tree,就是射线检测那一......
  • 类型转换
    由于java语言是强类型语言,所有进行有些运算的时候,需要用到类型转换低-------------------高byte/short/char----int----long----float----double运算中,不同类型的数据先转化为统一类型,然后进行运算强制类型转换:高----低自动转换:低----高publicclassdemo4{publics......
  • 【51单片机】1-2创建keil代码工程
    1.双击打开keil软件,点击Project->newuVisionproject2.在适当位置新建项目工程文件夹Template,双击进入该文件夹,并输入下方文件名保存。3.选择AT89C51或AT89C52均可后,点击是4.新建文本文件,保存为.c文件,主要保存.c文件的文件名与工程名相同5.右键添加文件或者双击......
  • PHP编程中的接口与性状:实现代码解耦与功能复用的关键技术
    本文由ChatMoney团队出品在PHP编程中,接口是一种定义对象之间交互契约的强大工具。其核心目的不是让一个对象紧耦合地依赖另一个对象的特定身份,而是基于另一对象的能力进行交互。通过接口,我们的代码可以实现与依赖的解耦,从而允许我们的代码与任何实现了相应接口的第三方代码协......
  • python里面加载js代码
    有一段js代码constCryptoJS=require("crypto-js")functionl(t,e){returnt.toString().toUpperCase()>e.toString().toUpperCase()?1:t.toString().toUpperCase()==e.toString().toUpperCase()?0:-1}functionu(t){for(vare=Ob......
  • 500 行代码构建自己的AI搜索引擎
    500行代码构建自己的AI搜索引擎,真的可行吗?先看效果图,下面是体验地址:https://search.lepton.run/特性:内置支持LLM内置对搜索引擎的支持可定制的漂亮UI界面可共享的缓存搜索结果基础搜索引擎有两个默认支持的搜索引擎:Bing和Google。若要使用必应Web搜索API,请访问......
  • QT开发积累——浮点类型的大小比较-----qFuzzyCompare 的作用
    目录引出qt中浮点类型的大小比较-----qFuzzyCompare的作用总结日积月累,开发集锦方法参数加const和不加const的区别方法加static和不加static的区别Qt遍历list提高效率显示函数的调用使用`&`与不使用`&`qt方法的参数中使用`&`与不使用`&`除法的一个坑项目创建相关新建......
  • python 数据类型
    python的常见基本数据类型Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典不可变数据类型(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据类型(3个):List(列表)、Dictionary(字典)、Set(集合)。python一切皆是对象类型指的也是对象的类型不......
  • 这款免费可视化工具能帮你实现零代码GIS场景编辑
    在当今快速发展的科技时代,GIS场景编辑已成为各行业不可或缺的一部分。然而,复杂的操作和昂贵的软件成本常常令许多人望而却步。幸运的是,现在有了一款免费的可视化工具——山海鲸可视化,它能帮你轻松实现零代码GIS场景编辑,满足你从三维GIS需求出发的所有要求。山海鲸可视化在GIS场......
  • 排序代码示例
    快速排序publicstaticvoidmain(String[]args){int[]arr={0,5,9,1,3,6};//intpartition=partition(arr,0,arr.length-1);quick(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}publicsta......