mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 06:07:20 +08:00 
			
		
		
		
	* feat(vertex): add a vertex pkg * feat(graph): add graph_bfs in go * feat(graph): add graph_dfs in go * fix(graph): fix comment * fix(graph): fix graph_adj_list * fix(go/graph): fix graph_adjacency * fix(c): gitignore * feat(graph): print order adjList graph * fix(graph): remove order print * Update graph_adjacency_list_test.go * Update .gitignore * Update .gitignore --------- Co-authored-by: Yudong Jin <krahets@163.com>
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// File: vertex.go
 | 
						|
// Created Time: 2023-02-18
 | 
						|
// Author: Reanon (793584285@qq.com)
 | 
						|
 | 
						|
package pkg
 | 
						|
 | 
						|
// Vertex 顶点类
 | 
						|
type Vertex struct {
 | 
						|
	Val int
 | 
						|
}
 | 
						|
 | 
						|
// NewVertex 构造方法
 | 
						|
func NewVertex(val int) Vertex {
 | 
						|
	return Vertex{
 | 
						|
		Val: val,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// ValsToVets Generate a vertex list tree given an array
 | 
						|
func ValsToVets(vals []int) []Vertex {
 | 
						|
	vets := make([]Vertex, len(vals))
 | 
						|
	for i := 0; i < len(vals); i++ {
 | 
						|
		vets[i] = NewVertex(vals[i])
 | 
						|
	}
 | 
						|
	return vets
 | 
						|
}
 | 
						|
 | 
						|
// VetsToVals Serialize given vertex list to a value list
 | 
						|
func VetsToVals(vets []Vertex) []int {
 | 
						|
	vals := make([]int, len(vets))
 | 
						|
	for i := range vets {
 | 
						|
		vals[i] = vets[i].Val
 | 
						|
	}
 | 
						|
	return vals
 | 
						|
}
 | 
						|
 | 
						|
// DeleteSliceElms 删除切片指定元素
 | 
						|
func DeleteSliceElms[T any](a []T, elms ...T) []T {
 | 
						|
	if len(a) == 0 || len(elms) == 0 {
 | 
						|
		return a
 | 
						|
	}
 | 
						|
	// 先将元素转为 set
 | 
						|
	m := make(map[any]struct{})
 | 
						|
	for _, v := range elms {
 | 
						|
		m[v] = struct{}{}
 | 
						|
	}
 | 
						|
	// 过滤掉指定元素
 | 
						|
	res := make([]T, 0, len(a))
 | 
						|
	for _, v := range a {
 | 
						|
		if _, ok := m[v]; !ok {
 | 
						|
			res = append(res, v)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return res
 | 
						|
}
 |