近兩天看《資料結構》,總結一下陣列與矩陣這部分的內容
一、陣列
乙個陣列的每乙個例項都是形如(索引,值)的數對集合,其中任意兩個數對的索引都不相同。有關陣列的操作如下:
簡而言之,就是索引和值構成的數對的集合就是陣列。二、矩陣
乙個m*n的矩陣是乙個m行、n列的表,m和n是矩陣的維數。矩陣在程式中一般是用一維陣列就行對映,主要有行主對映(按行的順序對元素一一對映)和列主對映(按列的順序對元素一一對映)。博主使用的是行主對映,對映關係為:
map(i,j) = i * columns + j
其中columns
表示陣列的列數。
2.1 普通矩陣
對於普通矩陣採用行主對映方式,過載操作符()、=、+、-、<<
,定義轉置運算等操作
templateclass matrix
int rows() const ; // 返回行數的函式
int columns() const // 返回列數的函式
t& operator() (int i, int j) const;
matrix& operator = (const matrix&);
matrixoperator +() const; // 單目運算子+
matrixoperator +(const matrix&) const;
matrixoperator -() const; // 單目運算子-
matrixoperator -(const matrix&) const;
matrix& operator +=(const t&);
matrixoperator *(const matrix&) const;
// 轉置運算
matrixtrans();
private:
int therows; // 矩陣的行數
int thecolumns; // 矩陣的列數
t* element; // 陣列element
};
具體函式實現見檔案arrayandmatrix.h
2.2 特殊矩陣
對角矩陣(diagonalmatrix.h):只有對角元素非0,因此採用對角線對映,就是把所有對角線的元素從上到下一一對映到一維陣列中;
三對角矩陣():只有對角線和對角線上下兩條相鄰的對角線,一共三條對角線上的元素是非0的,因此從下往上採用對角線對映即可;
下三角矩陣()
陣列與矩陣 轉圈列印矩陣(C 版)
題目 轉圈列印矩陣 要求 給定乙個整型矩陣matrix,請按照轉圈的方式列印它。要求額外空間複雜度為o 1 例如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 列印結果為 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 分析 逐邊列印外邊...
陣列與矩陣
toc 陣列是我們比較常接觸的一種資料結構了,就我們所了解的,陣列從一維到多維不等,由陣列演變出來的另一概念,被稱之為矩陣,但是其實質還是一種有序的序列。接下來給出一維陣列的實現。class array int arraysize int operator int i const 過載下標符 arr...
陣列與矩陣
建立陣列 建立簡單的陣列 x a b c d e f 建立包含指定元素的行向量。x first last 建立從first開始,加1計數,到last結束的行向量。x increment last 建立從first開始,加increment計數,到last結束的行向量。x linspace first...