稀疏数组和队列

 第一章 稀疏数组

1.1 问题需求

  • 实现五子棋程序中的存盘退出和续上盘的功能。

1.2 思路分析

  • 使用二维数组来记录棋盘,其中黑子为1,白子为2,但是这样会产生一个问题,因为该二维数组的很多值是默认值0,记录这些默认值没什么意思?怎么办?
  • 稀疏数组:当一个数组中大部分元素是0,或者是同一个值的数组时,可以使用稀疏数组来保存该数组。其处理方法如下所示:
  • ①记录数组一共有几行几列,有多少个不同的值。
  • ②把具有不同值的元素的行、列以及值记录在一个小规模的数组中,从而实现缩小数组的规模。
  • 示例:
  • 如果二维数组如下所示:
0    0    0    22   0    0    15
0    11   0    0    0    17   0
0    0    0    -6   0    0    0    
0    0    0    0    0    39   0
91   0    0    0    0    0    0    
0    0    28   0    0    0    0
  • 那么其对应的稀疏数组就如下所示:

  • 二维数组转稀疏数组的思路:
  • ①遍历原始的二维数组,得到有效数据的个数sum。
  • ②根据sum就可以创建稀疏数组 int[sum+1][3]。
  • ③将二维数组的有效数据存入到稀疏数组中。 
  • 稀疏数组转二维数组的思路:
  • ①先速去稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的int[6][7]。
  • ②在读取稀疏数组后几行的数据,并赋值给原始的二维数组即可。 

1.3 代码实现

猜你喜欢

转载自www.cnblogs.com/xuweiweiwoaini/p/11306714.html