package main
import "fmt"
type ValNode struct { //创建稀疏数组
row int
col int
val int
}
func main() {
//fmt.Println("hello")
//创建一个数组
var chessMap [11][11]int
//fmt.Println(chess)
chessMap[1][3] = 1 //黑子
chessMap[2][4] = 2 //白字
//1、遍历棋盘
for _, v1 := range chessMap {
for _, v2 := range v1 {
fmt.Printf("%d\t", v2)
}
fmt.Println() //换行
}
//2、创建一个稀疏数组,记录数组中的元素
//思路:遍历棋盘,如果有一个元素不为0,那么创建一个node结构体,将其放入到棋盘中去
var sparseArr []ValNode
//创建一个值节点保存棋盘大小
vNodee := ValNode{
row: 11,
col: 11,
val: 0,
}
sparseArr = append(sparseArr, vNodee)
for i, v1 := range chessMap {
for j, v2 := range v1 {
if v2 != 0 {
//不为零则创建值节点
vNodee := ValNode{
row: i,
col: j,
val: v2,
}
sparseArr = append(sparseArr, vNodee)
}
}
}
//3、输出稀疏数组
fmt.Println("当前稀疏数组是:")
for i, valNode1 := range sparseArr {
fmt.Printf("第%d个稀疏数 行为%d 列为%d 值为%d\n", i, valNode1.row, valNode1.col, valNode1.val)
}
//4、可通过文件保存的方式将数组保存
//5、可通过文件读取的方式读取稀疏数组
//6、通过稀疏数组恢复棋盘
var chessMap2 [11][11]int
for i, valNode := range sparseArr {
if i != 0 { //跳过第一行记录的棋盘大小
chessMap2[valNode.row][valNode.col] = valNode.val
}
}
// //7、打印恢复后的棋盘
for _, v1 := range chessMap2 {
for _, v2 := range v1 {
fmt.Printf("%d\t", v2)
}
fmt.Println() //换行
}
}
//output