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

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

?? p88.cpp

?? 清華大學-數據結構(課件+習題+課后答案)
?? CPP
字號:
		#include <iostream.h>
                #include <stdio.h>

		enum Boolean { False, True };
		struct Triple { int row, col;  float value; };					//三元組類的定義
		class Matrix;										//稀疏矩陣類的前視聲明

		class MatrixNode {									//矩陣結點類的定義
		friend class Matrix;
		friend istream & operator >> ( istream &, Matrix & );			//矩陣讀入
                friend ostream & operator << ( ostream &, Matrix & );
		private:
		   MatrixNode *down, *right;							//列/行鏈表指針
		   Boolean head;									//結點類型
		   union { Triple triple;  MatrixNode *next; };				//無名聯合
		   MatrixNode ( Boolean, Triple* );						//構造函數
		};

		MatrixNode::MatrixNode ( Boolean b, Triple *t ){				//構造函數
		   head = b;									//結點類型
		   if ( b ) { right = next = this; }						//各行/列鏈表的表頭結點
		   else triple = *t;									//頭結點鏈表的表頭或非零元素結點
		}
		typedef MatrixNode *MatrixNodePtr;						//一個指針數組

		class Matrix {									//稀疏矩陣的類定義
		friend istream & operator >> ( istream &, Matrix & );
                friend ostream & operator << ( ostream &, Matrix & );
		public:
		   ~Matrix ( );									//析構函數
		private:
		   MatrixNode *headnode; 							//稀疏矩陣的表頭
		};


		istream & operator >> ( istream & is, Matrix & matrix )	//讀入稀疏矩陣, 建立它的鏈表表示
		{
		   Triple s;  int p;
		   is >> s.row >> s.col >> s.value; 						//讀入矩陣行數、列數和非零元素個數
		   if ( s.row > s.col ) p = s.row;						//確定行/列鏈表表頭結點個數p
		   else p = s.col;									// p = max { s.row, s.col }
		   matrix.headnode = new MatrixNode ( False, &s );				//創建表的表頭結點
		   if ( !p ) { matrix.headnode->right = matrix.headnode;  return is; }	//至少一行或一列
		   MatrixNodePtr *H = new MatrixNodePtr [ p ];				//初始化表頭指針數組,指向各鏈表頭
		   for ( int i=0; i<p; i++ ) H[i] = new MatrixNode ( True, 0 );		//指向各鏈表頭結點
		   int CurrentRow = 0;
		   MatrixNode *last = H[0];							//last為當前行的最后結點指針
		   for ( i=0; i<s.value; i++ ) {							//輸入三元組, s.value給出三元組個數
			 Triple t;
		 is >> t.row >> t.col >> t.value;					//輸入三元組
			 if ( t.row > CurrentRow ) {						//行號大于當前行號,閉合當前行
			    last->right = H[CurrentRow];					//在行的方向向表頭結點拉鏈
			    CurrentRow = t.row;  last = H[CurrentRow];			//當前行改變為新的一行
			 }
			 last = last->right = new MatrixNode ( False, &t );			//新結點鏈入行鏈表,last跟上
			 H[t.col]->next = H[t.col]->next->down = last;			//鏈入列鏈表,next記下該結點地址
		   }
		   last->right = H[CurrentRow];						//閉合最后一行
		   for ( i=0; i<s.col; i++ ) H[i]->next->down = H[i];			//閉合所有列鏈表
		   for ( i=0; i<p-1; i++ ) H[i]->next = H[i+1];				//所有表頭結點鏈接在一起
		   H[p-1]->next = matrix.headnode;  matrix.headnode->right = H[0];
		   delete [ ] H;
		   return is;
		}


	      /*	if ( first != NULL ) {								//鏈表不空
		   CircListNode<Type> *second = first->link;			//循環鏈表的第二個結點
		   first->link = av;    av = second;					//第一個結點鏈接到av
		   first = NULL;
		}


		if ( av == NULL ) newnode = new CircListNode<Type>;	//可利用空間表為空,動態分配
		else { newnode = av;  av = av->link; }				//不空,從可利用空間表分配
		*/
                MatrixNode *av;

		Matrix::~Matrix ( ) {
		//將所有結點回收到可利用空間表中, 這個表是用right域鏈接的。av是一個具有MatrixNode*
		//類型的全局變量, 且指向它的前端第一個結點。
		   if ( headnode == NULL ) return;					//空鏈表, 無法回收
		   MatrixNode *x = headnode->right, *y;
		   headnode->right = av;  av = headnode;				//回收表頭結點的循環鏈表
		   while ( x != headnode ) {						//按行回收各行的循環鏈表
		      y = x->right;  x->right = av;  av = y;			//回收行 (循環) 鏈表
		      x = x->next;							//下一行
		   }
		   headnode = NULL;
		}

		ostream & operator << ( ostream & os, Matrix & matrix )
		{
		    MatrixNode *current = matrix.headnode , *temp;
		    cout << "row:  " << current->triple.row << endl;
		    cout << "column: " << current->triple.col << endl;
		    cout << "nonzero: " << current->triple.value << endl;
		    cout << "order in column:" << endl;
		    temp = current = current->right;
		    for (int column = 0 ; column < matrix.headnode->triple.col; column++) {
			cout << "column " << column << " : " ;
			temp = temp->down ;
			while ( temp != current ) {
			    cout << "(" << temp->triple.row << ",";
			    cout << temp->triple.col << ",";
			    cout << temp->triple.value << ") ";
			    temp = temp->down;
			};
			cout << endl;
			temp = current = current->next;
		    }

		    cout << "order in row:" << endl;
		    temp = current = current->right;
		    for (int row = 0; row < matrix.headnode->triple.row; row++) {
			cout << "row " << row << " : " ;
			temp = temp->right ;
			while ( temp != current ) {
			    cout << "(" << temp->triple.row << ",";
			    cout << temp->triple.col << ",";
			    cout << temp->triple.value << ") ";
			    temp = temp->right;
			};
			cout << endl;
			temp = current = current->next;
		    }


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

国产精品麻豆网站| 欧美嫩在线观看| 国产欧美日韩不卡免费| 国产sm精品调教视频网站| 久久久亚洲精品石原莉奈| 国产乱淫av一区二区三区| 久久精品一区八戒影视| 成人91在线观看| 一区二区三区在线视频免费 | 一区在线观看免费| 91丨九色丨蝌蚪富婆spa| 亚洲香肠在线观看| 日韩一区二区影院| 成人性视频免费网站| 国产精品福利影院| 在线观看中文字幕不卡| 秋霞av亚洲一区二区三| 精品国产三级电影在线观看| 国产成人一区在线| 成人欧美一区二区三区视频网页| 91久久精品一区二区三| 琪琪久久久久日韩精品| 国产精品水嫩水嫩| 欧美日韩一级黄| 国产成人精品免费看| 亚洲综合自拍偷拍| 久久久精品影视| 欧美日韩三级在线| 国产成人精品亚洲777人妖| 一区二区三区产品免费精品久久75| 欧美日韩免费高清一区色橹橹 | 一本久久a久久精品亚洲| 亚洲h动漫在线| 中文字幕精品一区二区三区精品| 在线观看91视频| 国产福利精品一区二区| 午夜精品一区二区三区免费视频 | 欧美性猛片xxxx免费看久爱| 久久国产欧美日韩精品| 悠悠色在线精品| 精品国产乱码久久久久久蜜臀 | 成人黄色免费短视频| 亚洲大片免费看| 亚洲国产精品t66y| 日韩欧美一区在线| 欧美午夜电影网| caoporn国产精品| 国产综合色精品一区二区三区| 亚洲毛片av在线| 国产精品理伦片| 久久久久99精品国产片| 欧美老人xxxx18| 一本一道综合狠狠老| 顶级嫩模精品视频在线看| 日韩电影在线一区二区| 一区二区三区四区视频精品免费 | 一区二区三区成人| 自拍偷在线精品自拍偷无码专区 | 激情综合网av| 奇米777欧美一区二区| 亚洲一级片在线观看| 国产精品不卡一区二区三区| 久久久久久久久久久黄色| 日韩一区国产二区欧美三区| 欧美午夜宅男影院| 成人深夜在线观看| 国产成人免费在线视频| 激情久久五月天| 狠狠色狠狠色综合日日91app| 日韩av在线发布| 丝袜国产日韩另类美女| 亚洲福利视频一区二区| 亚洲一区二区欧美日韩| 亚洲大片一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲精品成人天堂一二三| 成人免费小视频| 亚洲日本在线天堂| 亚洲女性喷水在线观看一区| 亚洲免费在线观看| 亚洲激情av在线| 亚洲国产aⅴ天堂久久| 亚洲国产精品影院| 蜜臀久久99精品久久久画质超高清| 午夜精品福利一区二区三区蜜桃| 亚洲大型综合色站| 日韩国产欧美在线视频| 久久丁香综合五月国产三级网站| 精品一区二区av| 国产老女人精品毛片久久| 日韩一卡二卡三卡| 日产国产高清一区二区三区| 欧美精品自拍偷拍| 欧美美女bb生活片| 日韩精品自拍偷拍| 免费看欧美女人艹b| 婷婷成人激情在线网| 青青青爽久久午夜综合久久午夜| 男人的天堂久久精品| 美国十次综合导航| 国产69精品久久久久777| 99精品视频一区二区| 欧美日韩成人一区二区| 精品国产乱码久久久久久蜜臀| 久久久亚洲精品石原莉奈| 中文字幕日本不卡| 日韩精品免费专区| 国产精品原创巨作av| 一本到高清视频免费精品| 91麻豆精品国产91久久久久| 欧美电视剧在线看免费| 国产精品久久久一本精品| 一区2区3区在线看| 精品中文av资源站在线观看| 99在线精品观看| 欧美一区二区女人| 国产精品免费aⅴ片在线观看| 亚洲成人在线网站| 国产99一区视频免费| 欧美猛男超大videosgay| 久久欧美中文字幕| 亚洲成人免费视| www.亚洲免费av| 欧美成人午夜电影| 自拍av一区二区三区| 久久99久久99精品免视看婷婷 | 视频一区欧美日韩| 成人91在线观看| 亚洲精品在线网站| 亚洲午夜日本在线观看| 成人免费视频caoporn| 欧美区在线观看| 亚洲精品一二三| 国产精品一区二区视频| 欧美日韩亚洲综合在线| 中文天堂在线一区| 精品一区二区av| 欧美久久久久久久久| 亚洲欧洲美洲综合色网| 国内精品久久久久影院薰衣草| 欧美日韩国产在线观看| 亚洲欧美中日韩| 国产盗摄女厕一区二区三区| 欧美mv和日韩mv国产网站| 五月天婷婷综合| 欧美综合亚洲图片综合区| 国产精品丝袜久久久久久app| 国产一区二区三区免费在线观看| 91精品一区二区三区在线观看| 一区二区三区在线视频观看58 | 国产精品天美传媒| 国产乱码精品1区2区3区| 欧美成人高清电影在线| 秋霞影院一区二区| 欧美电影一区二区| 夜夜爽夜夜爽精品视频| 色偷偷一区二区三区| 国产精品国产三级国产普通话三级| 国产乱子伦视频一区二区三区| 精品久久人人做人人爱| 久久99精品一区二区三区 | 欧美日韩在线电影| 亚洲精品v日韩精品| 91一区二区在线观看| 国产精品久久夜| 99久久久无码国产精品| 国产精品久久久久久久久快鸭| 成人高清免费观看| 国产精品黄色在线观看| 91老师片黄在线观看| 一区二区三区国产豹纹内裤在线| 色婷婷av一区| 天天做天天摸天天爽国产一区| 欧美男人的天堂一二区| 日韩精品一区第一页| 日韩一区二区在线观看视频| 国产真实乱偷精品视频免| 久久久国产午夜精品| eeuss国产一区二区三区| 亚洲精品国产高清久久伦理二区| 欧美综合色免费| 日本va欧美va精品| 国产日韩欧美高清在线| 91网站在线观看视频| 一区二区激情视频| 欧美日韩精品欧美日韩精品| 蜜桃视频在线一区| 国产精品网站在线| 欧美这里有精品| 麻豆极品一区二区三区| 中文字幕av一区二区三区免费看| 成人一级黄色片| 亚洲成人免费在线观看| 欧美va在线播放| 99久久综合精品| 日韩精品每日更新| 国产精品美女一区二区在线观看| 91高清视频在线| 久久99国产精品免费| 中文字幕一区二区三区视频|