package datastructure
import scala.collection.mutable.ArrayBuffer
/**
* 编写五子棋程序,有存盘退出和续上盘的功能
*/
object Sparsearray {
def main(args: Array[String]): Unit = {
val rowSize = 11
val colSize = 11
//创建棋盘
val chessArray = Array.ofDim[Int](rowSize, colSize)
//初始化棋子
chessArray(1)(2) = 1
chessArray(2)(3) = 2
//查看棋盘
for (item <- chessArray) {
for (item2 <- item) {
printf("%d \t", item2)
}
println()
}
//压缩棋盘
println("--------------------压缩棋盘存储----------------------")
val sparseArr = ArrayBuffer[Node]()
//保存原始数组信息
val node = new Node(rowSize, colSize, 0)
sparseArr.append(node)
for (i <- 0 until chessArray.length) {
for (j <- 0 until chessArray(i).length) {
if (chessArray(i)(j) != 0) {
val node = new Node(i, j, chessArray(i)(j))
sparseArr.append(node)
}
}
}
//输出稀疏数组
println("----------------稀疏数组------------------------")
for (node <- sparseArr) {
printf("%d\t%d\t%d\n", node.row, node.col, node.value)
}
//恢复棋盘
println("----------------恢复棋盘------------------------")
val newNode = sparseArr(0)
val rowSize2 = newNode.row
val colSize2 = newNode.col
val newChessArray = Array.ofDim[Int](rowSize, colSize)
for (itme <- 1 until sparseArr.length) {
val node = sparseArr(itme)
newChessArray(node.row)(node.col) = node.value
}
//查看棋盘
for (item <- newChessArray) {
for (item2 <- item) {
printf("%d \t", item2)
}
println()
}
}
}
class Node(val row: Int, val col: Int, val value: Int)