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

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

?? 稀疏矩陣運算器.cpp

?? 三元組表示的稀疏矩陣的加法,減法,乘法運算器
?? CPP
字號:
//設(shè)計用三元組表示的稀疏矩陣的加法,減法和乘法,初步設(shè)定最大行數(shù)為20行,非零元素的最大個數(shù)
//為400個.
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 400//假設(shè)非零元素個數(shù)的最大值為400
#define MAXRC 20	//假設(shè)矩陣的最大行數(shù)為20
typedef int ElemType;
typedef struct{
	int i,j;	//非零元的行下標和列下標
	ElemType e;//非零元的值
}Triple;
typedef struct{
	Triple data[MAXSIZE+1];//非零元三元組表,data[0]未使用
	int rpos[MAXRC+1];//各行第一個非零元的位置表
	int mu,nu,tu;//矩陣的行數(shù),列數(shù)各非零元個數(shù)
}TSMatrix,*Matrix;

void CreatSMatrix(TSMatrix &M){
//創(chuàng)建一個三元組來表示矩陣M,同時做出各行第一個非零元的位置表
	int i,k;
	for(i=1;i<=MAXRC+1;i++)//M.rpos的初始化
		M.rpos[i]=0;
	printf("請輸入矩陣的行數(shù),列數(shù)和非零元個數(shù)(以空格隔開):");
	scanf("%d %d %d",&M.mu,&M.nu,&M.tu);
	for(i=1;i<=M.tu;i++){//輸入三元組的元素
		printf("請輸入三元組形式的矩陣元素(行 列 非零元素):");
		scanf("%d %d %d",&M.data[i].i,&M.data[i].j,&M.data[i].e);
	}
	for(i=1,k=1;i<=M.mu;i++){//各行第一個非零元的位置表
		M.rpos[i]=k;
		while(M.data[k].i<=i && k<=M.tu)//查找同一行的元素,并使計數(shù)k累加
			k++;		
		} 
}

void AddSMatrix(TSMatrix A,TSMatrix B,TSMatrix &C){
//實現(xiàn)C=A+B的功能,在主函數(shù)里已經(jīng)判定A與B的行列是相等的
	int k1,k2,temp,l;
	C.mu=A.mu;//C的行初始化
	C.nu=A.nu;//C的列初始化
	k1=k2=l=1;//用l表示C非零元的個數(shù)
	while(k1<=A.tu && k2<=B.tu){//A與B的非零元都沒有遍歷完
			if(A.data[k1].i==B.data[k2].i){//A與B的行標相等
				if(A.data[k1].j<B.data[k2].j)//A的列標小于B的列標,剛把A的當(dāng)前元素插到C中
					C.data[l++]=A.data[k1++];
				else if(A.data[k1].j>B.data[k2].j)//A的列標大于B的列標,剛把B的當(dāng)前元素插到C中
					C.data[l++]=B.data[k2++];
				else{//A的列標和B的列標相等,則把兩矩陣的當(dāng)前的值相加,再判斷相加后的值是否為0
					//相加后不為0則插入到C中,否則就不插入C中
					temp=A.data[k1].e+B.data[k2].e;
					if(temp){//相加后的值不為0
						C.data[l].i=A.data[k1].i;
						C.data[l].j=A.data[k1].j;
						C.data[l].e=temp;
						l++;
					}
					k1++;k2++;
				}
			}
			else if(A.data[k1].i<B.data[k2].i)//A的行標小于B的行標,剛把A當(dāng)前元素插入到C中
				C.data[l++]=A.data[k1++];
			else//A的行標大于B的行標,剛把B當(dāng)前元素插入到C中
				C.data[l++]=B.data[k2++];
	}
	while(k1<=A.tu)//A還有非零元,則把A剩下的全部插入到C中
		C.data[l++]=A.data[k1++];
	while(k2<=B.tu)//B還有非零元,則把B剩下的全部插入到C中
		C.data[l++]=B.data[k2++];
	C.tu=l-1;
}

void ReverseSMatrix(TSMatrix A,TSMatrix &W){//實現(xiàn)W=-A即W為A的負矩陣
	int k;
	W.mu=A.mu;
	W.nu=A.nu;
	W.tu=A.tu;
	k=1;
	while(k<=A.tu){
		W.data[k].i=A.data[k].i;
		W.data[k].j=A.data[k].j;
		W.data[k].e=-A.data[k].e;
		k++;
	}
}
void SubSMatrix(TSMatrix A,TSMatrix B,TSMatrix &C){
//實現(xiàn)C=A-B,先做B的負矩陣N=-B,再利用加法實現(xiàn)C=A+N=A-B
	TSMatrix N;
	ReverseSMatrix(B,N);
	AddSMatrix(A,N,C);
}
int MultSMatrix(TSMatrix A,TSMatrix B,TSMatrix &Q){
//實現(xiàn)Q=A*B,返回1表示是正常的矩陣乘法,返回0表示出錯,不正確的乘法
	int arow,brow,ccol,tp,p,q,t;
	int ctemp[MAXRC+1];
	if(A.nu!=B.mu)		return 0;
	Q.mu=A.mu;Q.nu=B.nu;Q.tu=0;//Q的初始化
	if(A.tu*B.tu){//Q為非零元
		for(arow=1;arow<=A.mu;arow++){//處理A的每一行
			for(ccol=1;ccol<=Q.nu;ccol++)//當(dāng)前行各元素累加器清零
				ctemp[ccol]=0;
			Q.rpos[arow]=Q.tu+1;//處理Q的第arow行的第一個非零元
			if(arow<A.mu)	tp=A.rpos[arow+1];//用tp指示A的第arow+1行的第一個非零元的位置
			else	tp=A.tu+1;//當(dāng)arow不小于A.mu時,tp表示A的全部非零元個數(shù)加1
			for(p=A.rpos[arow];p<tp;p++){//對當(dāng)前行arow中每一個非零元
				brow=A.data[p].j;//找到對應(yīng)元在B中對應(yīng)的行號
				if(brow<B.mu)	t=B.rpos[brow+1];//用t指示B的第brow+1行的第一個非零元的位置
				else	t=B.tu+1;//當(dāng)brow不小于B.mu時,t表示B的全部非零元個數(shù)加1
				for(q=B.rpos[brow];q<t;q++){//處理B的brow行的所有非零元
					ccol=B.data[q].j;//乘積元素在B中的列號
					ctemp[ccol]+=A.data[p].e*B.data[q].e;
				}//for q
			}//for p
			for(ccol=1;ccol<=Q.nu;ccol++){//壓縮存儲該行的非零元
				if(ctemp[ccol]){
					if(++Q.tu>MAXSIZE)	return 0;
					Q.data[Q.tu].i=arow;
					Q.data[Q.tu].j=ccol;
					Q.data[Q.tu].e=ctemp[ccol];
				}//if
			}//for ccol
		}//for arow
	}//if
	return 1;
}//MultSMatrix


void Print_SMatrix(TSMatrix M){
//輸出用三元組表示的矩陣,零元用0輸出.
	int k,l,n;
	Matrix p;
	p=&M;
	if(M.tu==0){
		printf("%5d\n",0);
		return;
	}
	for(k=1,n=1;k<=p->mu;k++){
		for(l=1;l<=p->nu;l++){
			if(p->data[n].i==k && p->data[n].j==l){//行和列對應(yīng)的相等
				printf("%5d",p->data[n].e);
				n++;
			}
			else 
				printf("%5d",0);
		}
		printf("\n");
	}
	printf("\n");
}

void Destory_SMatrix(TSMatrix &M){
//銷毀稀疏矩陣M(使M為0行0列0個非零元素的矩陣)
	M.mu=M.nu=M.tu=0;
}
void main(){
	TSMatrix A,B,C;
	int flag,n;
	while(1){
		printf("0:退出\n1:加法\n2:減法\n3:乘法:\n");
		printf("請選擇(0~3):");
		scanf("%d",&flag);
		if(flag==0)	break;
		CreatSMatrix(A);
		CreatSMatrix(B);
		printf("矩陣A:\n");
		Print_SMatrix(A);
		printf("矩陣B:\n");
		Print_SMatrix(B);
		switch(flag){
		case 1:		if(A.mu==B.mu  && A.nu==B.nu){
					printf("A+B:\n");
					AddSMatrix(A,B,C);
					Print_SMatrix(C);
					}
					else	printf("錯誤!行列不一致\n");
					break;
		case 2:		if(A.mu==B.mu  && A.nu==B.nu){
					printf("A-B:\n");
					SubSMatrix(A,B,C);
					Print_SMatrix(C);
					}
					else	printf("錯誤!行列不一致\n");
					break;
		case 3:		printf("A*B:\n");
					n=MultSMatrix(A,B,C);
					if(!n)	printf("錯誤!行列不匹配\n");
					else	Print_SMatrix(C);	
					break;
		default:	printf("輸入錯誤!\n");
		}
		Destory_SMatrix(A);
		Destory_SMatrix(B);
		Destory_SMatrix(C);
	}
	fflush(stdin);
	getchar();
}






		






















?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品99精品国产| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲线精品一区二区三区八戒| 午夜精品福利一区二区蜜股av| 国产乱妇无码大片在线观看| 欧美日韩国产综合一区二区| 97se亚洲国产综合在线| 国产精品天天摸av网| 一区二区三区产品免费精品久久75| 久久精品理论片| 欧美日韩日日摸| 亚洲欧美日韩中文播放| 国产成人福利片| 日韩一区二区影院| 亚洲国产日韩av| 国产精品白丝在线| 久久电影网电视剧免费观看| 欧美日韩综合在线| 亚洲裸体xxx| kk眼镜猥琐国模调教系列一区二区| 精品久久久久久无| 免费成人av资源网| 91精品欧美一区二区三区综合在 | 91精品国产综合久久福利| 亚洲色图丝袜美腿| 成人精品视频网站| 中文av一区二区| 国产福利一区二区三区| 国产亚洲欧洲一区高清在线观看| 国产综合一区二区| 日韩免费在线观看| 国内成人精品2018免费看| 精品国产露脸精彩对白| 精品一区二区三区免费毛片爱| 欧美一区二区在线不卡| 日本欧美加勒比视频| 日韩欧美一级精品久久| 美女精品一区二区| 精品国产在天天线2019| 国产精品亚洲а∨天堂免在线| 国产农村妇女毛片精品久久麻豆 | 免费观看久久久4p| 日韩一级成人av| 国产一区在线视频| 国产精品亲子乱子伦xxxx裸| 色综合一个色综合| 亚洲大片免费看| 日韩一区二区三区观看| 久久99久久99小草精品免视看| 久久亚洲精品小早川怜子| 成人av动漫在线| 一区二区三区在线视频观看| 91精品国产手机| 韩国女主播成人在线| 国产精品毛片a∨一区二区三区 | 国产成人自拍高清视频在线免费播放 | 精品av久久707| 国产91丝袜在线观看| 亚洲欧美日韩中文字幕一区二区三区| 欧美综合亚洲图片综合区| 久久精品国产99国产精品| 亚洲精品在线免费观看视频| 成人看片黄a免费看在线| 亚洲一二三四区| 久久免费电影网| 色偷偷成人一区二区三区91| 日本亚洲电影天堂| 国产精品丝袜久久久久久app| 欧美午夜片在线看| 韩国精品免费视频| 亚洲蜜桃精久久久久久久| 日韩美女在线视频| 91麻豆国产福利在线观看| 久久99精品国产| 亚洲一区二区三区三| www久久精品| 欧美日韩亚洲综合在线| 成人激情免费电影网址| 日本91福利区| 亚洲女同女同女同女同女同69| 日韩三级高清在线| 色爱区综合激月婷婷| 国产成人啪午夜精品网站男同| 午夜久久久久久久久| 国产精品不卡一区二区三区| 欧美va天堂va视频va在线| 色呦呦网站一区| 国产传媒欧美日韩成人| 美女www一区二区| 亚洲综合色婷婷| 国产精品国产a| 久久久久国产成人精品亚洲午夜| 欧美日韩在线播放| 91麻豆成人久久精品二区三区| 国产精品综合视频| 极品尤物av久久免费看| 午夜激情一区二区| 一区二区三区欧美久久| 国产精品家庭影院| 久久久www免费人成精品| 日韩欧美专区在线| 6080亚洲精品一区二区| 欧美羞羞免费网站| 日本精品裸体写真集在线观看| www.亚洲国产| 不卡的av中国片| 成人免费视频视频在线观看免费| 韩国成人福利片在线播放| 美女视频网站黄色亚洲| 日韩成人av影视| 日本不卡123| 人人爽香蕉精品| 美女视频一区在线观看| 捆绑调教一区二区三区| 蜜桃av一区二区| 久久精品国产在热久久| 日韩高清在线电影| 日韩av在线免费观看不卡| 视频精品一区二区| 欧美在线一二三四区| 在线精品亚洲一区二区不卡| 欧美亚一区二区| 91精品国产乱| 久久午夜电影网| 日本一区二区视频在线| 自拍偷在线精品自拍偷无码专区| 亚洲人成精品久久久久久| 一区二区三区不卡视频在线观看| 亚洲国产一二三| 久久av中文字幕片| 国产精品资源网站| 91一区在线观看| 欧美精品久久久久久久久老牛影院| 国产91在线看| 99综合电影在线视频| 91在线精品一区二区三区| 在线免费观看一区| 日韩一区二区中文字幕| 国产日韩欧美a| 亚洲综合在线观看视频| 视频一区免费在线观看| 国产精一品亚洲二区在线视频| 成人精品视频一区二区三区 | 另类的小说在线视频另类成人小视频在线| 一区二区三区四区在线| 夜夜嗨av一区二区三区网页 | 九色综合国产一区二区三区| 成人一区二区三区| 欧美日韩综合一区| 久久久另类综合| 亚洲欧美日本韩国| 九色|91porny| 日本精品一区二区三区四区的功能| 91精品国产色综合久久不卡电影| 久久久影视传媒| 午夜av一区二区| gogogo免费视频观看亚洲一| 欧美放荡的少妇| 国产精品久久久久aaaa樱花 | 亚洲国产一区视频| 国产精品亚洲一区二区三区在线| 欧美性猛交xxxx黑人交| 国产欧美一区二区三区在线看蜜臀 | 国产一区二区成人久久免费影院 | 国产自产高清不卡| 激情欧美一区二区| 99国产精品久| 精品久久久久久无| 中文字幕在线免费不卡| 捆绑调教一区二区三区| 在线观看视频91| 国产精品免费aⅴ片在线观看| 亚洲一二三四区不卡| 成人久久18免费网站麻豆| 欧美www视频| 午夜免费久久看| 91麻豆国产香蕉久久精品| 国产拍揄自揄精品视频麻豆| 免费成人结看片| 欧美无砖砖区免费| 亚洲欧美视频在线观看| 九一九一国产精品| 日韩午夜在线观看| 丝袜国产日韩另类美女| 色综合天天做天天爱| 中日韩av电影| 国产精华液一区二区三区| 亚洲自拍偷拍网站| 亚洲国产精品二十页| 日本sm残虐另类| 欧美久久免费观看| 一区二区三区在线看| 91丨porny丨国产| 国产精品人妖ts系列视频| 国产白丝精品91爽爽久久| 国产喂奶挤奶一区二区三区 | 午夜电影网一区| 日本丰满少妇一区二区三区| 国产日韩欧美不卡在线| 国产不卡视频一区|