首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

數據結構二維數組行優先存儲地址計算:A[i][j] 對應一維下標 n*(i-1)+j

     編輯:程式設計綜合問答

推導過程

二維數組 `A[m][n]`(行 1..m,列 1..n)按行優先存儲於一維數組 `B`:

  1. 第 1 行佔 `B[1]..B[n]`
  2. 第 2 行佔 `B[n+1]..B[2n]`
  3. ...
  4. 第 i 行起始下標 = `(i-1)*n + 1`
  5. 第 i 行第 j 列下標 = `(i-1)*n + j`

驗證

`A[1][1] → 1`,`A[1][n] → n`,`A[2][1] → n+1`,`A[m][n] → m*n`,符合線性遞增。

選項對照

  • A. `n*(i-1)+j` **正確**
  • B. `n*(i-1)+j-1` 少 1(下標從 0 開始時正確)
  • C. `i*(j-1)` 錯誤
  • D. `j*m+i-1` 列優先公式

推廣:列優先

列優先(Fortran/Matlab)下標 = `(j-1)*m + i`。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved