go数据结构01-稀疏数组

在这里插入图片描述

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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值