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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sparsematrix.cpp

?? 清華大學計算機系數據結構課程教材《數據結構 用面向對象方法和C++描述》(殷人昆主編)的類庫(書中程序的源代碼)
?? CPP
字號:
//稀疏矩陣類操作的實現
#include "SparseMatrix.h"
template <class E>
SparseMatrix<E>::SparseMatrix (int Rw, int Cl, int Tm, Triple<E>* sma) {
    Rows = Rw;   Cols = Cl;   Terms = Tm; smArray = sma;	
    if (smArray == NULL) smArray = new Triple<E>[Terms];          //三元組表
    if (smArray == NULL) {
         cerr << "存儲分配失敗!" << endl;  exit(1);
    }	
};  

template <class E>
void SparseMatrix<E> ::
Transpose (SparseMatrix<E>& B) {
//轉置this矩陣,轉置結果由B返回
     B.Rows = Cols;   B.Cols = Rows; 
     B.Terms = Terms;
        //轉置矩陣的列數,行數和非零元素個數
     if (Terms > 0) {				
          int CurrentB = 0;   //轉置三元組表存放指針
          int i, k;
         for (k = 0; k < Cols; k++)       //處理所有列號
      	      for (i = 0; i < Terms; i++) 		
				  if (smArray[i].col == k) {
					  B.smArray[CurrentB].row = k;	
	                B.smArray[CurrentB].col = smArray[i].row;
	                B.smArray[CurrentB].value=smArray[i].value;	
 	                CurrentB++;					
				  }
     }
};    

template <class E> 
void SparseMatrix<E>::
      FastTranspos (SparseMatrix<E>& B) {
    int *rowSize = new int[Cols];       //列元素數數組
    int *rowStart = new int[Cols];      //轉置位置數組
    B.Rows = Cols;   B.Cols = Rows;
    B.Terms = Terms;
    if (Terms > 0) {
        int i, j;
        for (i = 0; i < Cols; i++) rowSize[i] = 0;        
	    for (i = 0; i < Terms; i++)
			rowSize[smArray[i].col]++; 
        rowStart[0] = 0;	
        for (i = 1; i < Cols; i++)			
			rowStart[i] = rowStart[i-1]+rowSize[i-1];
	    for (i = 0; i < Terms; i++) {			
			j = rowStart [smArray[i].col];		
	       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]++;		
		}        
}    
    delete [ ] rowSize;   delete [ ] rowStart;
}

template <class E>
SparseMatrix<E> SparseMatrix<E>::Add(SparseMatrix<E>& b) {
//兩個稀疏矩陣A (*this 指示) 與B (參數表中的b) 相加, 結果在Result 中
	SparseMatrix<E> result(Rows,Cols); //結果矩陣的三元組表
	if ( Rows != b.Rows || Cols != b.Cols) {
		cout << "Incompatible matrices" << endl; //兩個矩陣規格不一樣
		return result; //返回空矩陣
	}
	int i = 0, j = 0, index_a, index_b; result.Terms = 0;
	while (i < Terms && j < b.Terms) {
		index_a = Cols*smArray[i].row+smArray[i].col;
		index_b = Cols*b.smArray[j].row+b.smArray[j].col;
		if (index_a < index_b) { //smArray[i]在b.smArray[j]前
			result.smArray[result.Terms] = smArray[i];
			i++;
		}
		else if (index_a > index_b) { //smArray[i]在b.smArray[j]后
			result.smArray[result.Terms] = b.smArray[j];
			j++;
		}
		else { //smArray[i]和b.smArray[j]在相同位置
			result.smArray[result.Terms] = smArray[i];
			result.smArray[result.Terms].value= smArray[i].value + b.smArray[j].value;
			i++; j++;
		}
		result.Terms++;
	}
	//復制剩余元素
	for ( ; i < Terms; i ++) {
		result.smArray[result.Terms] = smArray[i];
		result.Terms++;
	}
	for ( ; j < b.Terms; j++) {
		result.smArray[result.Terms] = b. smArray[i];
		result.Terms++;
	}
	return result;
};

template <class E>
SparseMatrix<E> SparseMatrix<E>::Multiply(SparseMatrix<E>& b) {
//兩個稀疏矩陣a(*this 指示)與b(參數表中的b)相乘, 結果在Result 中
	SparseMatrix<E> result(Rows, b.Cols); //結果矩陣的三元組表
	if (Cols != b.Rows) {
		cout << "Incompatible matrices" << endl; //A 列數與B 行數不等
		return result; //返回空矩陣
	}
	if (Terms == maxTerms || b.Terms == maxTerms) {
		cout << "One additional space in a or b needed" << endl;
		return result; //空間不足,返回空矩陣
	}
	int *rowSize = new int[b.Rows]; //矩陣B 各行非零元素個數
	int *rowStart = new int[b.Rows+1]; //矩陣B 各行在三元組開始位置
	E *temp = new E[b.Cols]; //暫存每一行計算結果
	int i, Current, lastInResult, RowA, ColA, ColB;
	for (i = 0; i < b.Rows; i++) rowSize[i] = 0;
	cout << "success" << endl;
	for (i = 0; i < b.Terms; i++) rowSize[b.smArray[i].row]++;
	
	rowStart[0] = 0; //B第i 行非零元素開始位置
	for (i = 1; i <= b.Rows; i++)
		rowStart[i] = rowStart[i-1]+rowSize[i-1];
	
	
	Current = 0; lastInResult = -1; //a 掃描指針及result 存指針
	
	while (Current < Terms) { //生成result 的當前行temp
		RowA = smArray[Current].row; //當前行的行號
	//	cout <<  RowA << ' ' << Current << endl;
		for (i = 0; i < b.Cols; i++) temp[i] = 0;
		while (Current < Terms && smArray[Current].row == RowA) {
			ColA = smArray[Current].col; //矩陣A 當前掃描到元素的列號
			for (i = rowStart[ColA]; i < rowStart[ColA+1]; i++) {
				ColB = b.smArray[i].col; //矩陣B 中相乘元素的列號
				temp[ColB] += smArray[Current].value*b.smArray[i].value;
			} //A的RowA 行與B 的ColB 列相乘
			Current++;
		}
	//	cout << "success2" << endl;
		for (i = 0; i < b.Cols; i++)
			if (temp[i] != 0) { //將temp 中的非零元素壓縮到result 中去
				lastInResult++;
				cout << RowA << ' ' << i << ' ' << temp[i] << ' ' << lastInResult << endl;
				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;
	cout << "ss" << endl;
	return result;
	
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本va欧美va瓶| 久久这里只精品最新地址| 亚洲免费资源在线播放| 成人午夜视频免费看| 国产精品久久777777| 色综合 综合色| 三级精品在线观看| 日韩免费电影一区| 成人免费视频视频| 亚洲人成电影网站色mp4| 精品视频1区2区| 麻豆91免费观看| 日本一区二区三区国色天香| 91天堂素人约啪| 日韩综合在线视频| 久久久噜噜噜久噜久久综合| 99久久精品一区| 水野朝阳av一区二区三区| 久久人人97超碰com| 色综合天天性综合| 日产国产欧美视频一区精品| 精品国产一二三| 色综合色综合色综合色综合色综合| 亚洲一区免费观看| 久久久国产精华| 欧美羞羞免费网站| 国产一区二区三区最好精华液| 日韩理论片中文av| 欧美一区二区三区免费观看视频 | 欧美精品xxxxbbbb| 国内成人自拍视频| 一区二区成人在线视频| 精品国产制服丝袜高跟| 91视视频在线观看入口直接观看www| 午夜成人免费视频| 国产精品欧美一级免费| 8x8x8国产精品| aaa国产一区| 九一久久久久久| 亚洲一区二区偷拍精品| 国产日产欧美一区二区三区| 欧美日韩久久不卡| 成人激情小说乱人伦| 麻豆成人免费电影| 亚洲成人三级小说| 亚洲欧洲日本在线| 久久精品视频在线看| 欧美美女黄视频| 色婷婷av一区二区三区大白胸| 久久99精品久久只有精品| 亚洲综合色噜噜狠狠| 国产精品午夜电影| 欧美tickle裸体挠脚心vk| 精品视频在线看| 欧美精品欧美精品系列| 久久色中文字幕| 国产三级一区二区| 9191国产精品| 欧美性做爰猛烈叫床潮| 91丨九色丨国产丨porny| 国产精品456| 经典三级一区二区| 麻豆精品新av中文字幕| 日韩电影在线观看网站| 午夜欧美电影在线观看| 一区二区在线观看视频在线观看| 国产免费成人在线视频| wwwwxxxxx欧美| 欧美电视剧在线看免费| 欧美一级xxx| 欧美一级欧美一级在线播放| 欧美精品v日韩精品v韩国精品v| 色综合天天视频在线观看 | 99久久精品免费看国产| 丁香另类激情小说| 成人精品gif动图一区| 国产成人自拍网| 丁香一区二区三区| 成人激情黄色小说| 一本色道综合亚洲| 色呦呦日韩精品| 91久久精品一区二区三| 91福利社在线观看| 欧美裸体bbwbbwbbw| 欧美精品丝袜中出| 欧美tickling网站挠脚心| 欧美精品一区二区三区在线播放| 日韩精品一区二区三区视频播放| 欧美成人精品3d动漫h| 精品捆绑美女sm三区| 国产日韩亚洲欧美综合| 国产欧美精品一区二区色综合朱莉| 久久久久久久久久看片| 国产精品久久久久永久免费观看| 亚洲日穴在线视频| 性做久久久久久久久| 老司机免费视频一区二区三区| 久久国产夜色精品鲁鲁99| 国产成人亚洲综合色影视| 91在线你懂得| 欧美精品国产精品| 久久久www成人免费无遮挡大片| 中文字幕免费一区| 亚洲综合一区二区三区| 欧美aa在线视频| 国产sm精品调教视频网站| 一本色道久久综合亚洲精品按摩| 欧美日本一道本| 久久久蜜臀国产一区二区| 亚洲精品视频在线看| 奇米影视一区二区三区小说| 国产激情视频一区二区在线观看| 99re热视频这里只精品 | 欧美日韩国产综合草草| 欧美va亚洲va国产综合| 综合婷婷亚洲小说| 日本91福利区| 99热这里都是精品| 日韩欧美色电影| 亚洲免费观看视频| 久久99在线观看| 欧美在线不卡视频| 久久久精品国产免大香伊| 亚洲午夜久久久久久久久久久| 精品无人码麻豆乱码1区2区| 色94色欧美sute亚洲线路一久| 精品久久免费看| 亚洲无人区一区| 成人一道本在线| 日韩欧美成人一区| 一区二区三区视频在线看| 国产一区不卡视频| 欧美日韩亚洲综合在线 | 亚洲日穴在线视频| 国产精品一区二区三区99| 欧美人xxxx| 亚洲美女少妇撒尿| 成人国产在线观看| 久久综合九色综合欧美就去吻 | 亚洲国产日韩一级| a亚洲天堂av| 国产情人综合久久777777| 日韩综合在线视频| 色猫猫国产区一区二在线视频| 久久青草国产手机看片福利盒子| 视频在线观看一区| 91成人免费在线视频| 中文字幕一区二区三区蜜月 | 国产亚洲精品免费| 麻豆91精品91久久久的内涵| 欧美羞羞免费网站| 亚洲制服丝袜一区| 91捆绑美女网站| 国产精品色婷婷| 国产高清在线精品| 久久夜色精品国产欧美乱极品| 日韩av电影免费观看高清完整版 | 美女www一区二区| 欧美一区二区三区成人| 亚洲观看高清完整版在线观看| 99久久久免费精品国产一区二区| 久久久www成人免费无遮挡大片| 精品一区二区三区免费毛片爱| 6080日韩午夜伦伦午夜伦| 亚洲va天堂va国产va久| 欧美日韩色一区| 亚洲国产wwwccc36天堂| 欧美日韩精品一区二区在线播放| 亚洲图片有声小说| 欧美精品免费视频| 日日夜夜免费精品| 日韩欧美一二区| 国产在线一区观看| 欧美激情一区二区在线| 成人黄色软件下载| 亚洲黄一区二区三区| 欧美优质美女网站| 日韩福利视频网| 欧美大片一区二区| 国产一区二区精品在线观看| 国产欧美日韩精品一区| 成人午夜在线播放| 一区二区三区四区中文字幕| 欧美日韩五月天| 久久超碰97中文字幕| 久久久久9999亚洲精品| voyeur盗摄精品| 婷婷一区二区三区| 亚洲精品一区二区三区香蕉| 国产成+人+日韩+欧美+亚洲| 成人欧美一区二区三区1314| 91福利社在线观看| 蜜臀久久久久久久| 欧美极品美女视频| 色综合婷婷久久| 日本三级亚洲精品| 国产日韩精品一区二区三区| 在线精品视频免费播放| 免费成人美女在线观看.| 中文字幕欧美三区|