加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang数据结构之稀疏数组

发布时间:2020-12-16 09:18:02 所属栏目:大数据 来源:网络整理
导读:掌握知识: 数组的初始化和赋值 结构体的初始化和赋值 字符串和整型之间的转换以及其它的一些操作 类型断言 读取文件 写入文件 对稀疏数组进行压缩 package mainimport ( " bufio " fmt io os strconv strings " // "strconv" )func originArr() [ 11 ][ 11

掌握知识:

  • 数组的初始化和赋值
  • 结构体的初始化和赋值
  • 字符串和整型之间的转换以及其它的一些操作
  • 类型断言
  • 读取文件
  • 写入文件
  • 对稀疏数组进行压缩
package main

import (
    "bufio"
    fmtioosstrconvstrings"
    // "strconv"
)

func originArr() [11][11]int {
    创建原始数组
    var chessMap [

    chessMap[1][2] = 1
    chessMap[2][3] = 2
    return chessMap
}

func printArr(chessMap [) {
    打印数组
    for _,v1 := range chessMap {
         range v1 {
            fmt.Printf(%dt",v2)
        }
        fmt.Println()
    }
}

存储行、列、值
type valNode struct {
    row   
    col   int
    这里是接口类型,所以值可以是任意类型,不仅仅包含整型和字符型
    value interface{}
}

var sparseArr []valNode

func doParseArr(chessMap [) []valNode {
    稀疏数组
    遍历数组,如果某个值不为零,则将其放置在对应的结构体中
    val := valNode{
        原来数组的行和列以及值
        row:   110初始化存储稀疏数组
    sparseArr = append(sparseArr,val)

    for i,1)">for j,1)"> range v1 {
            if v2 !=  {
                 val valNode
                val.row = i
                val.col = j
                val.value = v2
                sparseArr = range sparseArr {
        fmt.Printf(第%d行,第%d列的值是%dn",j.row,j.col,j.value.())

    }
     sparseArr
}

func writeParseArr(sparseArr []valNode,filepath string将稀疏数组存储
    file,err := os.OpenFile(filepath,os.O_CREATE|os.O_APPEND|os.O_WRONLY,0666)
    if err != nil {
        
    }
    defer file.Close()
     range sparseArr {
        因为读取到的整型,需要转为字符串再进行写入
        将接口赋值给一个变量需要进行类型断言
        str := strconv.Itoa(j.row) + " " + strconv.Itoa(j.col) + " + strconv.Itoa((j.value.(int))) + n
        wriiter := bufio.NewWriter(file)
        wriiter.WriteString(str)
        wriiter.Flush()
         fmt.Printf("第%d行,第%d列的值是%dn",j.value.(int))

    }
}

func readParseArr(filepath string) (newChessMap [初始化数组
    读取存储的文件,并将每行转成
    file,os.O_RDONLY,1)">
    }
    defer file.Close()
    reader := bufio.NewReader(file)
    for {
        str,err := reader.ReadString('')
         nil {
            
        }
        tmp := strings.Split(strings.TrimRight(str,1)">"),1)"> fmt.Println(strings.Split(strings.TrimRight(str,"n")," "))
        r,_ := strconv.Atoi(tmp[])
        c,_ := strconv.Atoi(tmp[])
        v,1)">2])
        if r ==  {
            continue
        }
        newChessMap[r][c] = v
        if err == io.EOF {
            break
        }
    }
     newChessMap
}

func main() {
    chessMap := originArr()
    printArr(chessMap)
    sparseArr := doParseArr(chessMap)
    filepath := data.txt
    writeParseArr(sparseArr,filepath)
    newChessMap := readParseArr(filepath)
    printArr(newChessMap)
}

?

?data.txt

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读