稀疏数组

package main

import "fmt"

type ValueNode struct {
    Row int
    Cloumn int
    Value int
}

type ValueNodeSlice []ValueNode
func main() {
//  1.先创建一个原始数组
    var ChessMap [11][11]int
    ChessMap[1][2] = 1 //黑棋
    ChessMap[2][3]=2 // 蓝棋
//  2.输入看看原始的数组
    for _,v :=range ChessMap{
        for _,v2 :=range v{
            fmt.Printf("%d\t",v2)
        }
        fmt.Println()

    }

        var valueNodeSlice ValueNodeSlice
        valueNodeSlice = append(valueNodeSlice,ValueNode{Row:11,Cloumn:11})
        //fmt.Println(valueNodeSlice)

        for i,v :=range ChessMap{
            for i1,v2 :=range v{
                if v2 != 0 {
                    var valuenode ValueNode =ValueNode{i,i1,v2}
                    valueNodeSlice=append(valueNodeSlice,valuenode)
                }
            }
        }

        #打印稀疏数组
        for i,v :=range valueNodeSlice{
            fmt.Printf("%d: %d %d %d\n",i,v.Row,v.Cloumn,v.Value)
        }

        fmt.Println()

        #稀疏数组恢复成老的数组
        fmt.Println("Recover Array")
        var SparseArray2 [11][11]int
        for i,v :=range valueNodeSlice{
            if i == 0 {
                continue
            }
            SparseArray2[v.Row][v.Cloumn] = v.Value
        }

    for _,v :=range SparseArray2{
        for _,v2 :=range v{
            fmt.Printf("%d\t",v2)
        }
        fmt.Println()

    }

}
02-12 09:05