最近学习韩老师的数据结构,算是交下作业

/**

  • 1.二维数组与稀疏数组的转换
  • 2.稀疏数组的读写操作
  • @author wuwuby
  • @create 2020-02-03 下午3:20
    */
public class SparseTest {public static void main(String[] args) {//创建一个原始的二维数组 11 * 11//0:表示没有棋子,1表示黑子,2表示篮子int chessArr1[][] = new int[11][11];chessArr1[1][2] = 1;chessArr1[2][3] = 2;//输出原始的二维数组for(int[] row : chessArr1){for(int data : row){System.out.print(data + " ");}System.out.println();}//将二位数组转稀疏数组int sum = 0;//1.先遍历二位数组得到非0数组的个数for(int i = 0; i < 11; i++){for(int j = 0; j < 11; j++){if( chessArr1[i][j] != 0){sum++;}}}//2.创建对应的稀疏数组int sparseArray[][] = new int[sum + 1][3];//给稀疏数组赋值sparseArray[0][0] = 11;sparseArray[0][1] = 11;sparseArray[0][2] = sum;//遍历二维数组,将非0的值放到SparseArr中int count = 0; //用于记录是第几个非0数据for(int i = 0; i < 11; i++){for(int j = 0; j < 11; j++){if( chessArr1[i][j] != 0){count++;sparseArray[count][0] = i;sparseArray[count][1] = j;sparseArray[count][2] = chessArr1[i][j];}}}System.out.println();System.out.println("得到的稀疏数组为:");for(int i = 0; i < sparseArray.length; i++){System.out.printf("%d\t%d\t%d\t\n",sparseArray[i][0], sparseArray[i][1], sparseArray[i][2]);}System.out.println("*************************");//将稀疏数组恢复成二维数组int m = sparseArray[0][0];int n = sparseArray[0][1];int DoubleArray[][] = new int[m][n];for(int i = 0; i < sum; i ++){int a = sparseArray[i+1][0];int b = sparseArray[i+1][1];DoubleArray[a][b] = sparseArray[i+1][2];}for(int i = 0; i < 11; i++){for(int j = 0; j < 11; j++){System.out.print(DoubleArray[i][j] + " ");}System.out.println();}System.out.println("********************************");//调用读写方法writeSp(sparseArray, sum);readSp(sum);}//写入操作static void writeSp(int[][] sparseArray, int sum){int[] temp;FileOutputStream fos = null;try {//1.创建File对象与流对象File spOut = new File("map.data");fos = new FileOutputStream(spOut);//2.具体的写入操作for(int i = 0; i < sparseArray.length; i++){temp = sparseArray[i];for (int j = 0; j < temp.length; j++) {fos.write(temp[j]);}}} catch (IOException e) {e.printStackTrace();} finally {//3.关闭资源if(fos != null){try {fos.flush();fos.close();} catch (IOException e) {e.printStackTrace();}}}}//读取操作static void readSp(int sum){FileInputStream fis = null;try {fis = new FileInputStream("map.data");int[][] buffer = new int[sum + 1][3];int len;for (int i = 0; i < sum+1; i++) {for(int j = 0; j < 3 && ((len = fis.read())!= -1); j++){buffer[i][j] = len;}}System.out.println();System.out.println("读取稀疏数组为:");for(int i = 0; i < buffer.length; i++){System.out.printf("%d\t%d\t%d\t\n",buffer[i][0], buffer[i][1], buffer[i][2]);}} catch (IOException e) {e.printStackTrace();} finally {if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}}

稀疏数组的创建与读写文件操作相关推荐

  1. python怎么读取文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  2. [C++调试笔记]执行声明的读写文件操作

    FILE* fp_init, * fp_aver, * fp_flux_aver, * fp_ener_flux_aver, * fp_dura; FILE* fp_who[SHOWNUMB]; // ...

  3. python怎么读写文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  4. C# IO流读写文件操作

    C# IO流读写文件操作 1.创建文件流 2.创建文件读写器 3.执行读写操作 4.关闭文件读写器和文件流 1.创建文件流 string filePath = AppDomain.CurrentDom ...

  5. Node.js文件系统模块——读写文件操作

    文章目录 前言 一.导入fs模块 1.readFile() && readFileSync() 2.writeFile() && writeFileSync() 3.a ...

  6. python以读写方式打开文件_python读写文件操作详细介绍【传智播客】

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  7. 读写文件操作OpenFile()

    func generalWrite(filepath string, param string) {//创建文档,赋予读写权限f, err := os.OpenFile(filepath, os.O_ ...

  8. linux下c语言读写文件操作,linux下的系统级c语言文件读写操作

    最近初次接触Linux这么高端的东西,有种进城的感觉.进了linux,发现城里人说话做事的方式都很不一样. 个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,wh ...

  9. Python中open读写文件操作

    Python内置了读写文件的函数open() 1.读文件(使用内置的open()函数) f = open('/Users/michael/test.txt', 'r') 'r' 表示读,我可以可以利用 ...

最新文章

  1. 一文揭秘领域驱动设计(DDD):领域和子域!
  2. 使用SQL如何把用逗号等字符隔开的字符串转换成列表,以及把列合并成符合隔开的字符串(转)...
  3. 华为北大等联手打造的Transformer竟在CV领域超过了CNN:多项底层视觉任务达到SOTA...
  4. Android 控件学习--自定义SeekBar
  5. b转换成mb php_攻防世界之WEB篇,php反序列化漏洞,网络安全入门篇
  6. 有三AI高质量内容推荐(广告)须知
  7. 如何将静态网页通过nginx访问
  8. logon oracle 密码 用户名_oracle用户名密码及用户被锁等问题
  9. php mysql 快餐_用PHP+MYSQL做一个简单的点餐系统的后台,初学者. 请高手指点下如何实现后台添加菜名 餐馆 价格...
  10. 绕固定轴分解_3轴 / 5轴 / 3+2到底是什么......??
  11. Python基础:函数的介绍及应用
  12. mysql load 占位符,mysql:用不存在的数据的占位符初始化摘要表
  13. 杭电1231最大连续子序列
  14. 辗转相除法应用之倒C语言实现
  15. 【Multisim仿真】74LS193+74LS138流水灯
  16. 5月27日股市趋势追踪策略分析
  17. 孔雀东南飞用mysql存储_【原】一个真实的故事,现实版的《孔雀东南飞》
  18. C语言中delay的用法
  19. 浅析中西思维差异对英语口语交际的影响
  20. 小游戏-在评论留下你的运行结果吧

热门文章

  1. 彻底搞懂隐式类型转换
  2. 计算机组成原理课程设计报告书
  3. 维特比算法的通俗案例解释
  4. 抛出异常及声明异常 自己定义一个异常
  5. strcat、strcpy、strcmp三种函数用法
  6. 儿童定位手表app定制开发有哪些功能
  7. C/C++中,数组作为函数参数传入
  8. 10个必须掌握的SQL常用语句
  9. 人工智能实训室解决方案
  10. system call——系统调用