亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? p55_59.cpp

?? 包含常見的數(shù)據(jù)結(jié)構(gòu)的類和函數(shù)
?? CPP
字號:
//Test is T55_59.cpp#include <iostream.h>const int MaxTerms = 100;template <class Type>	class SparseMatrix;			//稀疏矩陣的類聲明template <class Type>	class Trituple {			//三元組類Trituplefriend class SparseMatrix<Type> ;friend istream & operator >> ( istream & , SparseMatrix<Type> & );friend ostream & operator << ( ostream & , SparseMatrix<Type> & );private:   int row, col;							//非零元素的行號、列號   Type value;							//非零元素的值};template <class Type>	class SparseMatrix {	//對象: 是一個三元組<row, column, value>的集合。其中, row和column是整數(shù), 記憶矩陣	//元素所在的行號和列號,而value是矩陣元素的值。friend istream & operator >> ( istream & , SparseMatrix<Type> & );friend ostream & operator << ( ostream & , SparseMatrix<Type> & );public:   SparseMatrix ();   SparseMatrix ( int MaxRow, int MaxCol ): Rows( MaxRow ), Cols( MaxCol ){};   	//構(gòu)造函數(shù)	//建立一個MaxRow行, Maxcol列的稀疏矩陣。   SparseMatrix<Type> Transpose ( );	//對*this指示的三元組數(shù)組中各個三元組交換其行、列的值, 得到其轉(zhuǎn)置矩陣。   SparseMatrix<Type> Add ( SparseMatrix<Type> b );	//當矩陣a(*this指示)與矩陣b的行、列數(shù)相同時, 將這兩個矩陣的對應(yīng)項相加。   SparseMatrix<Type> Multiply ( SparseMatrix<Type> b );	//按公式 c[i][j]=∑(a[i][k]*b[k][j]) 實現(xiàn)矩陣a與b相乘。k=0, 1, …, a的列數(shù)-1。   SparseMatrix<Type> FastTranspose ( );   SparseMatrix<Type> EmptyMatrix ( );private:   int Rows, Cols, Terms ;   Trituple<Type> smArray[MaxTerms];};template <class Type> SparseMatrix<Type> SparseMatrix<Type>::Transpose ( ) {	//將稀疏矩陣a(*this指示)轉(zhuǎn)置, 結(jié)果在稀疏矩陣b中。	   SparseMatrix<Type> b ( Cols, Rows );					//創(chuàng)建一個稀疏矩陣類的對象b	   b.Rows = Cols;							//矩陣b的行數(shù)=矩陣a的列數(shù)	   b.Cols = Rows;							//矩陣b的列數(shù)=矩陣a的行數(shù)	   b.Terms = Terms;						//矩陣b的非零元素數(shù)=矩陣a的非零元素數(shù)	   if ( Terms > 0 ) {							//非零元素個數(shù)不為零	      int CurrentB = 0;						//存放位置指針	      for ( int k=0; k<Cols; k++ )					//按列號做掃描,做Cols趟	   for ( int i=0; i<Terms; i++ ) 					//在數(shù)組中找列號為k的三元組		  if ( smArray[i].col == k ) {				//第i個三元組中元素的列號為k			b.smArray[CurrentB].row = k;			//新三元組的行號			b.smArray[CurrentB].col = smArray[i].row;	//新三元組的列號			b.smArray[CurrentB].value = smArray[i].value;	//新三元組的值			CurrentB++;						//存放指針進1		  }	   }	   return b;}template <class Type> SparseMatrix<Type> SparseMatrix<Type>::FastTranspose ( ) {	//對稀疏矩陣a(*this指示)做快速轉(zhuǎn)置, 結(jié)果放在b中, 時間代價為O(Terms+Columns)	   int *rowSize = new int[Cols];					//輔助數(shù)組, 統(tǒng)計各列非零元素個數(shù)	   int *rowStart = new int[Cols];					//輔助數(shù)組, 預(yù)計轉(zhuǎn)置后各行存放位置	   SparseMatrix<Type> b ( Cols, Rows );					 //存放轉(zhuǎn)置結(jié)果	   b.Rows = Cols;  b.Cols = Rows;  b.Terms = Terms;	   if ( Terms > 0 ) {		 for ( int i=0; i<Cols; i++ ) rowSize[i] = 0; 		//統(tǒng)計矩陣b中第i行非零元素個數(shù)		 for ( i=0; i<Terms; i++ ) rowSize[smArray[i].col]++;	      //根據(jù)矩陣a中第i個非零元素的列號, 將rowSize相當該列的計數(shù)加1		 rowStart[0] = 0;						//計算矩陣b第i行非零元素的開始存放位置		 for ( i=1; i <Cols; i++ )					//rowStart[i] = 矩陣b的第i行的開始存放位置		   rowStart[i] = rowStart[i-1]+rowSize[i-1];		 for ( i=0; i<Terms; i++ ) {					//從a向b傳送		   int j = rowStart[smArray[i].col];			// j為第i個非零元素在b中應(yīng)存放的位置		   b.smArray[j].row = smArray[i].col;		   b.smArray[j].col = smArray[i].row;		   b.smArray[j].value = smArray[i].value;		   rowStart[smArray[i].col]++;				//矩陣b第i行非零元素的存放位置加一		 }	   }	   delete [ ] rowSize;   delete [ ] rowStart;	   return b;}template <class Type> SparseMatrix<Type> SparseMatrix<Type>::Multiply(SparseMatrix<Type> b)	//兩個稀疏矩陣A (*this指示) 與B (參數(shù)表中的b) 相乘, 結(jié)果在Result中{    if ( Cols != b.Rows ) {	 cout << "Incompatible matrices" << endl;			//A矩陣列數(shù)與B矩陣行數(shù)不等	 return EmptyMatrix ( );					//不能做乘法的矩陣,返回空矩陣    }    if ( Terms == MaxTerms || b.Terms == MaxTerms ) {		//有一個矩陣的項數(shù)達到最大       cout << "One additional space in a or b needed" << endl;	 return EmptyMatrix ( );					//空間不足,返回空矩陣    }    int *rowSize = new int[b.Rows];		 		//輔助數(shù)組, 矩陣B各行非零元素個數(shù)    int *rowStart = new int[b.Rows+1]; 				//輔助數(shù)組, 矩陣B各行在三元組開始位置    Type * temp = new Type[b.Cols];				//臨時數(shù)組, 暫存每一行計算結(jié)果    SparseMatrix<Type> result ( Rows, b.Cols );			//結(jié)果矩陣的三元組表result    for ( int i=0; i<b.Cols; i++ ) rowSize[i] = 0; 		//統(tǒng)計矩陣B中第i行非零元素個數(shù)    for ( i=0; i<b.Terms; i++ ) rowSize[smArray[i].row]++;    rowStart[0] = 0;							//計算矩陣B第i行非零元素的開始位置    for ( i=1; i <=b.Cols; i++ ) rowStart[i] = rowStart[i-1] + rowSize[i-1];    int Current = 0,  lastInResult = -1;				//a.smArray掃描指針及result存放指針    while ( Current < Terms ) {					//生成result的當前行temp	  int RowA = smArray[Current].row;			//當前行的行號	  for ( i=0; i<b.Cols; i++ ) temp[i] = 0;			//temp初始化	  while ( Current < Terms && smArray[Current].row == RowA ) {	     int ColA = smArray[Current].col;			//矩陣A當前掃描到元素的列號	     for ( i=rowStart[ColA]; i<rowStart[ColA+1]; i++ ) {		  int ColB = b.smArray[i].col;			//矩陣B中相乘元素的列號		  temp[ColB] = temp[ColB] + smArray[Current].value * b.smArray[i].value;	     }								//A的RowA行與B的ColB列相乘	    Current++;	  }	  for ( i=0; i<b.Cols; i++ )	    if ( temp[i] != 0 ) {					//將temp中的非零元素壓縮到result中去		 lastInResult++;		 result.smArray[lastInResult].row = RowA;		 result.smArray[lastInResult].col = i;		 result.smArray[lastInResult].value = temp[i];	    }    }    result.Rows = Rows;  result.Cols = b.Cols;  result.Terms = lastInResult+1;    delete [ ] rowSize;  delete [ ] rowStart;  delete [ ] temp;    return result;}template <class Type>  SparseMatrix<Type> SparseMatrix<Type>:: EmptyMatrix ( ) {    SparseMatrix<Type> b(0,0);    return b;}template <class Type> istream & operator >> ( istream & is , SparseMatrix<Type> & matrix) {    cout << "Rows and Cols: " << endl;    is >> matrix.Rows >> matrix.Cols;    cout << "row col value : ( ended by row = -1 ) " << endl;    matrix.Terms = -1 ;    do {	matrix.Terms ++;	is >> matrix.smArray[matrix.Terms].row	   >> matrix.smArray[matrix.Terms].col	   >> matrix.smArray[matrix.Terms].value;    } while ( matrix.smArray[matrix.Terms].row != -1 );    return is;}template <class Type> ostream & operator << ( ostream & os , SparseMatrix<Type> & matrix) {    if ( matrix.Terms == 0 ) { os << "It is empty."; return os}    os << "Rows: " << matrix.Rows << endl;    os << "Cols: " << matrix.Cols << endl;    os << "col row value: " << endl;    for (int i=0; i<matrix.Terms; i++) {	os << matrix.smArray[i].row << " "	   << matrix.smArray[i].col << " "	   << matrix.smArray[i].value << endl;    }    return os;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产美| 亚洲综合免费观看高清完整版| 国产欧美久久久精品影院| 国产日韩精品一区二区三区 | 午夜欧美在线一二页| 美女视频一区二区| 国产成a人亚洲精| 色婷婷av一区二区三区软件| 91精品国产欧美日韩| 久久久久久久久久久99999| 亚洲区小说区图片区qvod| 肉色丝袜一区二区| 成人午夜激情在线| 欧美日韩国产免费一区二区| 国产亚洲成年网址在线观看| 亚洲欧美日韩小说| 国产一区二区福利视频| 色狠狠一区二区| 精品电影一区二区| 亚洲人成在线播放网站岛国 | 91精品国产免费| 国产精品免费久久久久| 亚洲123区在线观看| 国产不卡视频在线观看| 欧美日韩在线精品一区二区三区激情| 精品999久久久| 伊人婷婷欧美激情| 狠狠色丁香久久婷婷综合_中| 色婷婷国产精品久久包臀| 26uuu成人网一区二区三区| 亚洲精品乱码久久久久久 | 亚洲精品在线观| 一区二区三区在线视频播放| 精品一区二区三区不卡| 在线精品视频一区二区三四| 久久精品人人做人人综合| 午夜伊人狠狠久久| av成人老司机| 26uuu欧美日本| 奇米在线7777在线精品| 在线精品国精品国产尤物884a| 国产网站一区二区| 麻豆成人在线观看| 欧美日韩在线播放| 亚洲欧美日韩久久精品| 国产91精品入口| 欧美电影免费观看高清完整版在线 | 精品999在线播放| 亚洲18影院在线观看| 一本色道a无线码一区v| 欧美经典一区二区| 狠狠色丁香婷综合久久| 欧美一区二区三区视频在线| 亚洲另类春色国产| 成人精品免费看| 久久综合国产精品| 精品一区二区三区av| 欧美一区二区三区视频在线| 亚洲制服欧美中文字幕中文字幕| 成人午夜精品一区二区三区| 久久网站热最新地址| 看电视剧不卡顿的网站| 欧美男同性恋视频网站| 亚洲激情在线激情| 91蜜桃免费观看视频| 国产精品福利av| 成人午夜免费电影| 中文字幕制服丝袜一区二区三区 | 久久久久久久久97黄色工厂| 狂野欧美性猛交blacked| 欧美一区二区三区小说| 日韩 欧美一区二区三区| 欧美另类高清zo欧美| 樱桃国产成人精品视频| 在线观看www91| 亚洲美女淫视频| 欧美综合亚洲图片综合区| 亚洲欧美色图小说| 91行情网站电视在线观看高清版| 亚洲欧美另类久久久精品2019| av激情综合网| 樱桃视频在线观看一区| 欧美亚洲国产一卡| 亚洲第一久久影院| 欧美福利视频一区| 麻豆国产精品视频| 国产清纯美女被跳蛋高潮一区二区久久w| 九色porny丨国产精品| 欧美tk丨vk视频| 国产精品综合一区二区| 国产婷婷一区二区| 成人av在线一区二区| 亚洲视频一二三区| 欧美色图片你懂的| 日韩精品免费视频人成| 日韩精品自拍偷拍| 国产精品亚洲一区二区三区在线| 日本一区二区三区四区| 色哟哟精品一区| 天堂资源在线中文精品| 日韩欧美激情一区| 国产精品亚洲午夜一区二区三区| 国产精品美女久久久久久2018| 91在线观看成人| 午夜视频在线观看一区| 亚洲精品在线观| aaa欧美大片| 天天av天天翘天天综合网色鬼国产 | 亚洲乱码精品一二三四区日韩在线 | 国产欧美精品一区aⅴ影院 | 中文字幕一区二区不卡 | 午夜成人免费电影| 久久久久久免费网| 色综合一区二区| 三级久久三级久久久| 久久综合久久综合久久综合| 成人av在线网| 日韩中文字幕亚洲一区二区va在线| 精品乱人伦小说| 91蜜桃网址入口| 久久99国产精品免费| 国产精品国产a| 欧美一区二区三区日韩视频| 成人免费福利片| 日本欧美在线看| 中文字幕中文乱码欧美一区二区| 欧美精品视频www在线观看| 国产高清在线精品| 亚洲小说春色综合另类电影| 亚洲精品一线二线三线| 色先锋资源久久综合| 国内一区二区视频| 亚洲午夜视频在线观看| 久久久精品tv| 欧美日韩成人一区| av网站一区二区三区| 久久99国产精品成人| 亚洲精品国产成人久久av盗摄| 日韩欧美国产综合| 欧洲精品一区二区| 丁香网亚洲国际| 青青草国产精品97视觉盛宴| 国产精品国产三级国产普通话蜜臀| 在线播放亚洲一区| 99国产精品国产精品毛片| 七七婷婷婷婷精品国产| 亚洲色大成网站www久久九九| 日韩久久久久久| 欧美在线视频日韩| 97久久精品人人做人人爽| 极品尤物av久久免费看| 午夜影院在线观看欧美| √…a在线天堂一区| 精品国产sm最大网站免费看| 欧美揉bbbbb揉bbbbb| 不卡的电影网站| 久久99国产乱子伦精品免费| 亚洲一区二区精品久久av| 国产精品盗摄一区二区三区| 精品区一区二区| 欧美日本一道本在线视频| 91伊人久久大香线蕉| 国产精品91一区二区| 麻豆一区二区三区| 午夜伦欧美伦电影理论片| 亚洲欧美日韩一区二区| 国产精品高潮呻吟久久| 国产欧美日韩麻豆91| 欧美成人一区二区三区| 7777精品久久久大香线蕉| 在线观看网站黄不卡| fc2成人免费人成在线观看播放| 国产剧情在线观看一区二区| 日本成人在线网站| 亚洲sss视频在线视频| 亚洲自拍偷拍av| 亚洲小说欧美激情另类| 亚洲精品第一国产综合野| 国产精品久久久久久久久免费桃花| 亚洲精品一区二区三区精华液| 91麻豆精品国产91久久久久久久久| 欧美在线免费播放| 日本国产一区二区| 色婷婷一区二区| jlzzjlzz亚洲女人18| 波多野结衣亚洲| av中文字幕亚洲| 99久久精品免费| 91影视在线播放| 在线精品视频免费观看| 欧美日韩一区二区三区在线| 欧美日韩一区二区三区视频| 欧美视频在线观看一区二区| 欧美视频一二三区| 欧美老人xxxx18| 91麻豆精品国产| 日韩欧美一二三区| 精品免费国产一区二区三区四区| 精品国产乱码久久久久久老虎| 精品精品欲导航|