go数组转换为稀疏数组
package main
import "fmt"
type Node struct {
   Row   int
   Col   int
   Value int
}
// 稀疏数组
func main() {
   sparse := ToSparse()
   ToArray(sparse)
}
// ToArray 稀疏数组恢复
func ToArray(sparse []Node)  {
   var arr  [11][11]int
   for k, node := range sparse {
      if k != 0 {
         arr[node.Row][node.Col] = node.Value
      }
   }
   fmt.Println("恢复后的原始数据")
   for _, v := range arr {
      fmt.Println(v)
   }
}
// ToSparse 数组转换为稀疏数组
func ToSparse() []Node {
   const row = 11
   const col = 11
   // 1 创建一个原始数组 1 黑子 2 蓝子
   var chessMap [row][col]int
   chessMap[1][2] = 1
   chessMap[2][3] = 2
   // 2 输出查看原始数据
   for _, v := range chessMap {
      fmt.Println(v)
   }
   // 3 转为稀疏数组
   // 遍历chessMap 发现一个元素的值!=0 创建一个node结构体
   // 将其放入到切片中
   var sparseArr []Node
   // 加入规模 标准的稀疏数组 含有 行数 列数
   node0 := Node{
      Row:   row,
      Col:   col,
      Value: 0,
   }
   sparseArr = append(sparseArr, node0)
   for i, v := range chessMap {
      for j, v2 := range v {
         if v2 != 0 {
            // 创建一个节点
            var node = Node{
               Row:   i,
               Col:   j,
               Value: v2,
            }
            sparseArr = append(sparseArr, node)
         }
      }
   }
   // 4 输出查看原始数据
   for _, node := range sparseArr {
      fmt.Printf("%d %d %d \n",node.Row, node.Col, node.Value)
   }
   return sparseArr
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 2 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
11 11 0 
1 2 1 
2 3 2
恢复后的原始数据
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 2 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号