zoukankan      html  css  js  c++  java
  • 数据结构之稀释数组


    阅读目录

    一、稀释数组

    二、稀释数组应用

    一、 稀释数据

    1.实际需求



    2.基本介绍



    二、稀释数组应用

    1.存放棋盘

    type ValueNode struct {
    	row int
    	col int
    	val int
    }
    
    func main() {
    	// 1.创建原始数组
    	var chessMap [11][11]int
    	chessMap[1][2] = 1 //黑子
    	chessMap[2][3] = 2 //白子
    
    	// 2. 输出查看原始数组
    	for _, v := range chessMap {
    		for _, v1 := range v {
    			fmt.Printf("%d	", v1)
    		}
    		fmt.Println()
    	}
    	// 3. 转成稀疏数组 -> 算法
    	//(1)遍历chessMap 如果我们发现一个元素的值不为0,创建一个node结构体
    	//(2)将其放入到对应的切片中
    	var sparseArr []ValueNode
    
    	// 标准稀疏数组,二维数组行 列 默认值
    	valNode := ValueNode{
    		row: 11,
    		col: 11,
    		val: 0,
    	}
    	sparseArr = append(sparseArr, valNode)
    
    	for k, v := range chessMap {
    		for k1, v1 := range v {
    			if v1 != 0 {
    				// 创建一个ValNode节点
    				valNode := ValueNode{
    					row: k,
    					col: k1,
    					val: v1,
    				}
    				// 标准的稀疏数组还需要包含有几行几列
    				sparseArr = append(sparseArr, valNode)
    
    			}
    		}
    		fmt.Println()
    	}
    	fmt.Println("稀疏数组是:")
    	for i, node := range sparseArr {
    		fmt.Printf("%d: %d %d %d
    ", i, node.row, node.col, node.val)
    	}
    
    	// 4.稀疏数组恢复棋盘
    	var chessMap2 [11][11]int
    
    	for i, v3 := range sparseArr {
    		if i != 0 { // 跳过第一行
    			chessMap2[v3.row][v3.col] = v3.val
    		}
    
    	}
    
    	fmt.Println("恢复后的原始数据.......")
    	for _, v := range chessMap2 {
    		for _, v1 := range v {
    			fmt.Printf("%d	", v1)
    		}
    		fmt.Println()
    	}
    }
    
  • 相关阅读:
    7、Nginx基础Http原理
    8、nginx基础
    9、nginx常用基础模块
    第一章·MySQL介绍及安装
    第二章· MySQL体系结构管理
    第三章·MySQL版本区别及管理
    第四章· MySQL客户端工具及SQL讲解
    第五章· MySQL数据类型
    第六章· MySQL索引管理及执行计划
    第七章· MySQL的存储引擎
  • 原文地址:https://www.cnblogs.com/zhangliang91/p/11701200.html
Copyright © 2011-2022 走看看