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

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

?? graphl.h

?? 圖的基類以及最短路徑算法
?? H
字號:
//*************** Link.h **************//

#define UNVISITED 0
#define VISITED 1
#define INFINITE 0xffffffff
#define N 5 // 定義圖的頂點數

struct listUnit  {    //鄰接表表目中數據部分的結構定義
	int vertex;      //邊的終點
	int weight;      //邊的權
};

template<class Elem>   //鏈表元素
class Link  {
public:
	Elem element;      //表目的數據
	Link *next;        //表目指針,指向下一個表目
	Link(const Elem& elemval,Link *nextval = NULL)  { //構造函數
		element = elemval; 
		next = nextval; 
	}
	Link(Link *nextval = NULL)  { 					//構造函數
		next = nextval; 
	} 
};

template<class Elem>   //鏈表
class LList  {
public:
	Link<Elem>* head;  //head指針并不儲存任何實際元素,其存在只是為了操作方便
	LList()  {          //構造函數
		head = new Link<Elem>();
	}
	void removeall()  {  //釋放邊表所有表目占據的空間
		Link<Elem> *fence;
		while(head != NULL)  { //逐步釋放每個表目占據的空間
			fence = head;
			head = head->next;
			delete fence;
		}
	}
	~LList() {				//析構函數
		removeall();
	}
};


class Graphl: public Graph  {
private:
	LList<listUnit> *graList;  //graList是保存所有邊表的數組	
public:
	Graphl(int numVert):Graph(numVert)  { //構造函數
		graList = new LList<listUnit>[numVertex]; /*為graList數組申請空間,圖有
										  numVertex個頂點,則有numVertex個邊表*/
	}

	~Graphl()  {                        //析構函數
		delete [] graList;				   //釋放空間
	}
	
	Edge FirstEdge(int oneVertex)  {   //返回頂點oneVertex的第一條邊
		Edge myEdge;                   //邊myEdge將作為函數的返回值
		myEdge.from = oneVertex;       //將頂點oneVertex作為邊myEdge的始點
									  /*graList[oneVertex].head保存的是頂點oneVertex的邊表,
									  temp->next指向頂點oneVertex的第一條邊(如果temp->next
									  不為null)*/
		Link<listUnit> *temp = graList[oneVertex].head;
		if(temp->next != NULL)  {        //如果頂點oneVertex的第一條邊確實存在
			myEdge.to = temp->next->element.vertex;
			myEdge.weight = temp->next->element.weight;
		}
		/*如果找到了頂點oneVertex的第一條邊,則返回的myEdge確實是一條邊;如果沒有
		找到頂點oneVertex的第一條邊,則myEdge的成員變量to為-1,根據IsEdge函數判
		斷可知myEdge不是一條邊*/
		return myEdge;
	}	

	Edge NextEdge(Edge preEdge)  {  // 返回與邊PreEdge有相同關聯頂點的下一條邊
		Edge myEdge;			 		// myEdge的初始成員變量to為-1
		myEdge.from = preEdge.from;  		// 將邊的始點置為與上一條邊的相同
		Link<listUnit> *temp = graList[preEdge.from].head;		// temp指向邊表頭一個
		while (temp->next != NULL && temp->next->element.vertex <= preEdge.to)
			temp = temp->next; 			// 確定邊preEdge的位置
		if (temp->next != NULL) {		// 邊preEdge的下一條邊存在
			myEdge.to = temp->next->element.vertex;
			myEdge.weight = temp->next->element.weight;
		}
		return myEdge;					// 如果沒有找到第一條邊,myEdge.to=-1
	}

	void setEdge(int from,int to,int weight)  {  //為圖設定一條邊
		Link<listUnit> *temp = graList[from].head;  /*graList[from].head保存的是頂點from的
													邊表,temp->next指向頂點from的第一條邊
													(如果temp->next不為null)*/
		while(temp->next != NULL && temp->next->element.vertex < to)
			temp = temp->next;   /*確定邊(from,to)或<from,to>在邊表中的位置,如果不存在,
									則邊(from,to)或<from,to>為新加的一條邊*/
		if(temp->next == NULL) {  /*邊(from,to)或<from,to>在邊表中不存在且在邊表中其后
									已無其它邊,則在邊表中加入這條邊*/
			temp->next = new Link<listUnit>;
			temp->next->element.vertex = to;
			temp->next->element.weight = weight;
			numEdge++;
			Indegree[to]++;
			return;
		}
		if(temp->next->element.vertex == to)  { /*邊(from,to)或<from,to>在邊表中已存在,
												故只需要改變邊的權值*/
			temp->next->element.weight = weight;
			return;
		}
		if(temp->next->element.vertex>to) { /*邊(from,to)或<from,to>在邊表中不存在,但在邊表中
												其后存在其它邊,則在邊表中插入這條邊*/
			Link<listUnit> *other = temp->next;
			temp->next = new Link<listUnit>;
			temp->next->element.vertex = to;
			temp->next->element.weight = weight;
			temp->next->next = other;
			numEdge++;
			Indegree[to]++;
			return;
		}
	}

	void delEdge(int from,int to)  {          //刪掉圖的一條邊
		Link<listUnit> *temp = graList[from].head;  /*graList[from].head保存的是頂點from的邊表,temp->next指向頂點from的第一條邊(如果temp->next不為null)*/
		while(temp->next != NULL && temp->next->element.vertex<to)  
			temp = temp->next;	/*確定邊(from,to)或<from,to>在邊表中的位置(如果該邊存在)*/
		if(temp->next == NULL)
			return;        //邊(from,to)或<from,to>在邊表中不存在,則不需要做任何操作
		if(temp->next->element.vertex>to)
			return;        //邊(from,to)或<from,to>在邊表中不存在,則不需要做任何操作
		if(temp->next->element.vertex == to) { /*邊(from,to)或<from,to>在邊表中存在且確
											   定了該邊在邊表中的位置,則從邊表中將其刪掉*/
			Link<listUnit> *other = temp->next->next;
		    delete temp->next;
		    temp->next = other;
		    numEdge--;
		    Indegree[to]--;
		    return;
		}
	}

	void IniGraphl(Graphl *Graphl, int A[N][N]);
	void DFS(Graph& G, int v);
	void BFS(Graph& G, int v);
	void Visit(Graph &G, int v);
};

// 函數功能:初始化圖
void Graphl::IniGraphl(Graphl *Graphl, int A[N][N])  {
	for (int i = 0; i < N; i ++)  	{
		for (int j = 0; j < N; j ++)  {
			if (A[i][j] > 0)
				Graphl->setEdge(i, j, A[i][j]);
		}
	}
}


//函數功能:深度優先搜索算法實現
void Graphl::DFS(Graph& G, int v)  {    //深度優先搜索算法實現
    G.Mark[v] = VISITED;       //訪問頂點v,并標記其標志位
    Visit(G,v);	
    //訪問V鄰接到的未被訪問過的頂點,并遞歸地按照深度優先的方式進行周游
    for(Edge e=G.FirstEdge(v);G.IsEdge(e);e=G.NextEdge(e))
        if(G.Mark[G.ToVertex(e)]== UNVISITED)
			DFS(G, G.ToVertex(e));
}


// 函數功能:廣度優先搜索
void Graphl::BFS(Graph& G, int v)  {           // 廣度優先搜索算法的實現
    using std::queue;
	queue<int> Q;                    // 初始化廣度優先周游要用到的隊列
	Visit(G,v);                       // 問頂點v,并標記其標志位
    G.Mark[v] = VISITED;
    Q.push(v);                       // v入隊
	while (!Q.empty())  {              // 如果隊列仍然有元素
		int u = Q.front ();              // 隊列頂部元素
		Q.pop();                     // 隊列頂部元素出隊
        // 該頂點鄰接到的每一個未訪問頂點都入隊
		for (Edge e = G.FirstEdge(u);G.IsEdge(e);e = G.NextEdge(e))
		if (G.Mark[G.ToVertex(e)] == UNVISITED)  {
		        Visit(G, G.ToVertex(e));	
				G.Mark[G.ToVertex(e)] = VISITED;
		    	Q.push(G.ToVertex(e));  // 入隊
		    }
	}
}


// 函數功能:顯示頂點
void Graphl::Visit(Graph &G, int v) {
	cout << 'V' << v <<" ";
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级视频在线观看| 欧美午夜电影网| 蜜臀精品一区二区三区在线观看| 亚洲综合小说图片| 亚洲黄色在线视频| 亚洲444eee在线观看| 香蕉影视欧美成人| 日本中文在线一区| 久久99精品视频| 国产精品系列在线播放| 国产一区二区三区免费观看| 国产福利91精品一区| 福利一区在线观看| 色综合天天狠狠| 777奇米成人网| 精品少妇一区二区三区视频免付费| 日韩视频在线观看一区二区| 久久免费电影网| 亚洲欧洲成人精品av97| 一区二区三区中文在线观看| 亚洲国产成人高清精品| 麻豆极品一区二区三区| 国产成人精品1024| 91免费看片在线观看| 欧美日韩国产另类一区| 欧美刺激脚交jootjob| 久久精品欧美一区二区三区麻豆| 亚洲国产精品成人久久综合一区| 亚洲人妖av一区二区| 亚洲一区自拍偷拍| 美女视频网站黄色亚洲| 成人免费高清在线观看| 欧美精品777| 国产精品欧美久久久久一区二区| 亚洲va欧美va人人爽| 国内成人精品2018免费看| 99久久er热在这里只有精品15| 欧美日韩高清一区二区三区| 国产日产欧美一区二区三区| 亚洲精选视频在线| 狠狠狠色丁香婷婷综合激情| 日本道免费精品一区二区三区| 7777女厕盗摄久久久| 国产精品每日更新在线播放网址| 亚洲成在人线在线播放| 成人午夜伦理影院| 日韩亚洲欧美在线| 亚洲女人的天堂| 久久国产精品免费| 色屁屁一区二区| 国产精品久久久久久久久久久免费看| 日韩激情在线观看| 色8久久精品久久久久久蜜| 精品久久久久香蕉网| 亚洲自拍与偷拍| av电影在线不卡| 日本一区二区电影| 日韩不卡一二三区| 欧美亚洲动漫另类| 国产精品另类一区| 国产九色sp调教91| 欧美成人一区二区三区片免费 | 久久久国际精品| 性做久久久久久久久| 在线一区二区三区做爰视频网站| 国产精品毛片a∨一区二区三区| 蜜臀精品久久久久久蜜臀| 欧美三级欧美一级| 有码一区二区三区| 91色九色蝌蚪| 亚洲蜜臀av乱码久久精品 | 1区2区3区精品视频| 国产·精品毛片| 国产嫩草影院久久久久| 国产传媒日韩欧美成人| 亚洲国产精品99久久久久久久久 | 欧美久久一二区| 一二三区精品福利视频| 日本韩国欧美在线| 亚洲网友自拍偷拍| 欧美日本国产视频| 三级在线观看一区二区| 欧美一级片在线看| 久久成人久久鬼色| 精品系列免费在线观看| 日本道在线观看一区二区| 日韩毛片高清在线播放| 91久久线看在观草草青青| 亚洲激情图片小说视频| 欧美亚洲动漫另类| 性感美女极品91精品| 欧美成人免费网站| 国产成人小视频| 亚洲人妖av一区二区| 精品视频一区二区三区免费| 日本在线观看不卡视频| 久久久久久电影| 色综合av在线| 麻豆91在线看| 国产精品久久久久aaaa樱花| 色妞www精品视频| 看片网站欧美日韩| 国产精品美女一区二区在线观看| 91久久线看在观草草青青| 日韩激情av在线| 国产精品美女一区二区| 欧美日韩一级视频| 国产高清精品网站| 亚洲图片欧美综合| 国产欧美一区视频| 欧美久久一二区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲成在线观看| 久久精品欧美一区二区三区麻豆| 色天使久久综合网天天| 韩国一区二区三区| 亚洲一区二区三区视频在线| 欧美va日韩va| 在线这里只有精品| 国产乱码精品一区二区三区五月婷| 亚洲精品久久嫩草网站秘色| 欧美精品一区二区三区蜜臀 | 亚洲另类春色国产| 久久亚洲精精品中文字幕早川悠里| 91欧美激情一区二区三区成人| 免费成人深夜小野草| 有码一区二区三区| 国产精品免费人成网站| 欧美一区二区精美| 91行情网站电视在线观看高清版| 国产成人在线看| 精品一区二区久久久| 日日夜夜精品视频天天综合网| 国产精品护士白丝一区av| 欧美精品一区视频| 欧美一区日韩一区| 欧美日韩中文字幕一区| 91麻豆成人久久精品二区三区| 福利一区福利二区| 国产一区二区三区黄视频| 美女精品一区二区| 婷婷激情综合网| 婷婷中文字幕综合| 午夜精品久久久久久| 亚洲综合激情另类小说区| 最好看的中文字幕久久| 国产精品美女久久久久久久网站| 久久亚洲精品小早川怜子| 日韩亚洲国产中文字幕欧美| 欧美一区二视频| 日韩一级大片在线| 精品国产一区久久| 久久丝袜美腿综合| 久久精品男人天堂av| 欧美激情一区二区三区全黄| 国产视频一区不卡| 一区在线观看视频| 亚洲黄色av一区| 亚洲成人久久影院| 免费看黄色91| 国产盗摄一区二区| 成人国产视频在线观看| 91丨porny丨国产| 欧美中文字幕一区二区三区 | a美女胸又www黄视频久久| 99久久伊人网影院| 91福利在线播放| 欧美蜜桃一区二区三区| 日韩写真欧美这视频| 久久久国产精品午夜一区ai换脸| 国产精品理伦片| 亚洲激情中文1区| 蜜臀va亚洲va欧美va天堂| 国产一区视频导航| 91小视频免费看| 91精品中文字幕一区二区三区| 久久免费精品国产久精品久久久久 | 在线视频国产一区| 欧美一区二区啪啪| 国产精品无码永久免费888| 亚洲免费视频中文字幕| 婷婷久久综合九色国产成人 | 亚洲一区日韩精品中文字幕| 亚洲国产精品一区二区www| 蜜臀av一区二区三区| 91玉足脚交白嫩脚丫在线播放| 91精品国产黑色紧身裤美女| 久久久www免费人成精品| 亚洲精品成人悠悠色影视| 蜜臀va亚洲va欧美va天堂| 99久久精品国产毛片| 日韩女优电影在线观看| 亚洲免费三区一区二区| 麻豆国产一区二区| 在线观看国产精品网站| 精品91自产拍在线观看一区| 亚洲精品中文字幕乱码三区| 黄色成人免费在线| 在线观看视频欧美| 国产精品福利一区|