稀疏数组的创建与读写文件操作
最近学习韩老师的数据结构,算是交下作业
/**
- 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();}}}}}
稀疏数组的创建与读写文件操作相关推荐
- python怎么读取文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- [C++调试笔记]执行声明的读写文件操作
FILE* fp_init, * fp_aver, * fp_flux_aver, * fp_ener_flux_aver, * fp_dura; FILE* fp_who[SHOWNUMB]; // ...
- python怎么读写文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- C# IO流读写文件操作
C# IO流读写文件操作 1.创建文件流 2.创建文件读写器 3.执行读写操作 4.关闭文件读写器和文件流 1.创建文件流 string filePath = AppDomain.CurrentDom ...
- Node.js文件系统模块——读写文件操作
文章目录 前言 一.导入fs模块 1.readFile() && readFileSync() 2.writeFile() && writeFileSync() 3.a ...
- python以读写方式打开文件_python读写文件操作详细介绍【传智播客】
Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...
- 读写文件操作OpenFile()
func generalWrite(filepath string, param string) {//创建文档,赋予读写权限f, err := os.OpenFile(filepath, os.O_ ...
- linux下c语言读写文件操作,linux下的系统级c语言文件读写操作
最近初次接触Linux这么高端的东西,有种进城的感觉.进了linux,发现城里人说话做事的方式都很不一样. 个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,wh ...
- Python中open读写文件操作
Python内置了读写文件的函数open() 1.读文件(使用内置的open()函数) f = open('/Users/michael/test.txt', 'r') 'r' 表示读,我可以可以利用 ...
最新文章
- 一文揭秘领域驱动设计(DDD):领域和子域!
- 使用SQL如何把用逗号等字符隔开的字符串转换成列表,以及把列合并成符合隔开的字符串(转)...
- 华为北大等联手打造的Transformer竟在CV领域超过了CNN:多项底层视觉任务达到SOTA...
- Android 控件学习--自定义SeekBar
- b转换成mb php_攻防世界之WEB篇,php反序列化漏洞,网络安全入门篇
- 有三AI高质量内容推荐(广告)须知
- 如何将静态网页通过nginx访问
- logon oracle 密码 用户名_oracle用户名密码及用户被锁等问题
- php mysql 快餐_用PHP+MYSQL做一个简单的点餐系统的后台,初学者. 请高手指点下如何实现后台添加菜名 餐馆 价格...
- 绕固定轴分解_3轴 / 5轴 / 3+2到底是什么......??
- Python基础:函数的介绍及应用
- mysql load 占位符,mysql:用不存在的数据的占位符初始化摘要表
- 杭电1231最大连续子序列
- 辗转相除法应用之倒C语言实现
- 【Multisim仿真】74LS193+74LS138流水灯
- 5月27日股市趋势追踪策略分析
- 孔雀东南飞用mysql存储_【原】一个真实的故事,现实版的《孔雀东南飞》
- C语言中delay的用法
- 浅析中西思维差异对英语口语交际的影响
- 小游戏-在评论留下你的运行结果吧