經典資料結構之矩陣的基本運算

2021-06-19 08:54:40 字數 2758 閱讀 3981

用一維陣列來表示矩陣其實質與二維陣列沒啥區別,只是多了下標一步對映而已。由於方法本身很簡單,所以不多做介紹。很容易擴充套件轉置等方法,從而實現乙個更為全面的矩陣型別。

cmatrix.h

#ifndef cmatrix_hhh

#define cmatrix_hhh

#include #include #include templateclass cmatrix;

// operator <<

//friend std::ostream& operator<<(std::ostream& out, const cmatrix& matrix);

// row num;

templatevoid cmatrix::print(std::ostream& out)

out m_nrow(row), m_ncol(col)

template cmatrix::cmatrix(const cmatrix& matrix):

m_nrow(matrix.m_nrow), m_ncol(matrix.m_ncol)

template cmatrix::~cmatrix()

template t& cmatrix::operator()(const int& i, const int& j) const

template cmatrixcmatrix::operator+() const

return tmpmatrix;

}template cmatrixcmatrix::operator+(const cmatrix& matrix) const

return tmpmatrix;

}template cmatrixcmatrix::operator-() const

return tmpmatrix;

}template cmatrixcmatrix::operator-(const cmatrix& matrix) const

return tmpmatrix;

}templatecmatrixcmatrix::operator*(const t& data) const

template cmatrixcmatrix::operator*(const cmatrix& matrix) const

}} return tmpmatrix;

}template cmatrix& cmatrix::operator=(const cmatrix& matrix)

return *this;

}template cmatrix& cmatrix::operator+=(const cmatrix& matrix)

template int cmatrix::mrows() const

template int cmatrix::mcols() const

#endif

main.cpp

#include "cmatrix.h"

#include using namespace std;

int main()

cout << "print matrix" << endl;

matrix.print(cout);

cmatrixtmp = matrix;

tmp.print(cout);

cout << "print -matrix" << endl;

tmp = (-matrix);

tmp.print(cout);

cout << "print +matrix" << endl;

tmp = +matrix;

tmp.print(cout);

cout << "print -matrix + matrix" << endl;

tmp += matrix;

tmp.print(cout);

cout << "print k * matrix" << endl;

tmp = matrix;

tmp = tmp * 2;

tmp.print(cout);

cout << "print the sum of each row" << endl;

cmatrixtmpmul(5,1);

for(int i = 1; i <= 5; i ++)

tmpmul = matrix * tmpmul;

tmpmul.print(cout);

system("pause");

return 0;

}

測試輸出

print matrix

-2 -2

-2 -2

-2 -4

-4 -4

-4 -4

-2 -2

-2 -2

-2 -4

-4 -4

-4 -4

print -matrix

2 22 2

2 44 4

4 4print +matrix

2 22 2

2 44 4

4 4print -matrix + matrix

0 00 0

0 00 0

0 0print k * matrix

-4 -4

-4 -4

-4 -8

-8 -8

-8 -8

-10 -20

請按任意鍵繼續. . .

經典資料結構之稀疏矩陣

資料的儲存形式,不外乎鍊錶和類陣列兩種。使用二維陣列儲存矩陣,如果該矩陣是稀疏的,那麼會浪費很多空間。例如乙個4 4的對角陣,很明顯,只有主對角線上才有元素。那麼使用二維陣列儲存需要16個單位的 儲存空間。然而通過定義乙個結構體 templatestruct sdatatype 然後將其存放於陣列,...

資料結構之順序表的基本運算

include include include include using namespace std define maxsize 100 typedef char elemtype typedef struct sqlist void initlist sqlist l 初始化順序表l void...

資料結構與基本運算

複習篇 1.資料型別 numeric 包含integers 整數型 和double precision 雙精度型 預設是雙精度型資料 character 這種資料形式是夾在雙引號或單引號之間的字串.logical 取true or false complex 形如a bi型的複數 raw 原始型 二...