国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

編寫算法:根據(jù)含有n個頂點(diǎn)的有向圖鄰接表,構(gòu)造相應(yīng)的逆鄰接表。

1.算法的思想:
鄰接表和逆鏈接表的頂點(diǎn)信息是相同的,直接復(fù)制即可。把出邊信息轉(zhuǎn)換成入邊信息,則需要逐一訪問鄰接表的各結(jié)點(diǎn)的出邊表,把邊結(jié)點(diǎn)通過頭插法插入相應(yīng)的入邊表中。

2.算法的實(shí)現(xiàn):

typedef struct node{		/*邊表結(jié)點(diǎn)*/	
	int adjvex;				/*鄰接點(diǎn)域*/	
	struct node * next;		/*指向下一個鄰接點(diǎn)的指針域*/	
}EdgeNode;					/*若要表示邊上信息,則應(yīng)增加一個數(shù)據(jù)域info*/	

typedef struct ArcNode{
	int adjvex;				//該邊所指向的結(jié)點(diǎn)的位置	
	ArcNode *nextarc;		//指向下一條邊的指針	
}ArcNode;

typedef struct vnode{		/*頂點(diǎn)表結(jié)點(diǎn)*/	
	char vertex [20];		/*頂點(diǎn)域*/	
	EdgeNode *firstedge;	/*邊表頭指針*/	
	ArcNode *firstarc;		//指向第一條邊的指針	
}VertexNode;

/*AdjList是鄰接表類型*/	
typedef VertexNode AdjList[MaxVerNum];	

typedef struct {
	AdjList adjlist;		/*鄰接表*/	
	int n,e;				/*頂點(diǎn)數(shù)和邊數(shù)*/	
}ALGraph;

//將有向圖的出度鄰接表改為按入度建立的逆鄰接表
void InvertAdjList(AdjList ginAdjList gout)
{
	int j;
	ArcNode *s;
	for(i=1;i<=n;i++)	   //設(shè)有向圖有n個頂點(diǎn),建逆鄰接表的頂點(diǎn)	
	{
		gin[i].vertex==gout[i].vertex;	//鄰接表和逆鏈接表的頂點(diǎn)信息是相同的,直接復(fù)制即	
		gin.firstarc=null;	//指向第一條邊的指針為空	
	}
	for(i=1;i<=n;i++)	  //鄰接表轉(zhuǎn)為逆鄰接表	
	{
		p=gout[i].firstarc;	//取指向鄰接表的指針	
		while(p!=null){
			j=p->adjvex;	  			//該邊所指向的結(jié)點(diǎn)的位置	
			s=(rcNode*)malloc(sizeof(ArcNode));	//申請結(jié)點(diǎn)空間	
			s->adjvex=i;	   			//把邊結(jié)點(diǎn)通過頭插法 插入到相應(yīng)的入邊表	
			s->next=gin[j].firstarc; gin[j].firstarc=s;
			p=p->next;					//下一個鄰接點(diǎn)	
		}
	}
}

舉個栗子:
【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表
鄰接表:
【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表
逆鄰接表:
【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表
注:
一個稀疏圖頂點(diǎn)個數(shù)為n,邊數(shù)為e。為了解決在存儲稀疏圖鄰接矩陣(使用存儲空間 n2 )浪費(fèi)空間的這一劣勢,引入鄰接表( n+2e)來減少存儲空間的浪費(fèi)。
鄰接表雖然在空間上有很大的優(yōu)勢,但是對于有向圖來說,若需查找入度的個數(shù)就需要遍歷整個鄰接表,所以也不方便,效率有點(diǎn)低哦,解決這個問題有兩種方法:
1:十字交叉鏈表
2:逆鄰接表(與鄰接表共同使用,達(dá)到更好的效果)文章來源地址http://www.zghlxwxcb.cn/news/detail-508679.html

  • 鄰接表:某頂點(diǎn)鏈表的結(jié)點(diǎn)個數(shù)是發(fā)出去的弧的數(shù)量,也就是出度。
  • 逆鄰接表:某頂點(diǎn)鏈表的結(jié)點(diǎn)個數(shù)是進(jìn)入的弧的數(shù)量,也就是入度。
  • 鄰接表反映的是結(jié)點(diǎn)的出度鄰接情況,逆鄰接表反映的是結(jié)點(diǎn)的入度鄰接情況。

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】算法題:鄰接表構(gòu)造相應(yīng)的逆鄰接表的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法與數(shù)據(jù)結(jié)構(gòu)】106、LeetCode從中序與后序遍歷序列構(gòu)造二叉樹

    【算法與數(shù)據(jù)結(jié)構(gòu)】106、LeetCode從中序與后序遍歷序列構(gòu)造二叉樹

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :首先我們要知道后序遍歷數(shù)組的最后一個元素必然是根節(jié)點(diǎn),然后根據(jù)根節(jié)點(diǎn)在中序遍歷數(shù)組中的位置進(jìn)行劃分,得到根節(jié)點(diǎn)的左右子樹遍歷數(shù)組,以此遞歸。當(dāng)然這里有一個前提

    2024年02月10日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】鄰接矩陣和鄰接圖的遍歷

    【數(shù)據(jù)結(jié)構(gòu)】鄰接矩陣和鄰接圖的遍歷

    本篇文章開始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的圖的相關(guān)知識,涉及的基本概念還是很多的。 本文的行文思路: 學(xué)習(xí)圖的基本概念 學(xué)習(xí)圖的存儲結(jié)構(gòu)——本文主要介紹鄰接矩陣和鄰接表 對每種結(jié)構(gòu)進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷 話不多說,狠活獻(xiàn)上 等等,先別急,正式學(xué)習(xí)之前先認(rèn)識幾個

    2024年02月04日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)——圖的基本定義以及圖的存儲結(jié)構(gòu),鄰接矩陣,鄰接表

    數(shù)據(jù)結(jié)構(gòu)——圖的基本定義以及圖的存儲結(jié)構(gòu),鄰接矩陣,鄰接表

    目錄 圖的定義和術(shù)語 圖的存儲結(jié)構(gòu) 順序存儲結(jié)構(gòu)—鄰接矩陣 鏈?zhǔn)酱鎯Y(jié)構(gòu) 鄰接表 鄰接多重表 十字鏈表 圖的遍歷 圖的連通性問題 有向無環(huán)圖及其應(yīng)用 最短路徑 圖的定義:圖是一種非線性的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),圖中的數(shù)據(jù)元素的關(guān)系是多對多的關(guān)系?,在圖中我們常常把數(shù)

    2024年02月04日
    瀏覽(34)
  • C++數(shù)據(jù)結(jié)構(gòu)之圖的存儲結(jié)構(gòu)——鄰接矩陣和鄰接表實(shí)現(xiàn)無向圖

    C++數(shù)據(jù)結(jié)構(gòu)之圖的存儲結(jié)構(gòu)——鄰接矩陣和鄰接表實(shí)現(xiàn)無向圖

    關(guān)鍵點(diǎn): 1.構(gòu)建二維數(shù)組 2.對應(yīng)邊的位置賦值為1 由于比較簡單就直接上代碼: 個人對鄰接表實(shí)現(xiàn)無向圖的理解如下,僅供參考: ????????由于無向圖的組成是由多個頂點(diǎn)和多條無向邊組成的,因此我們可以把它拆分成兩個結(jié)構(gòu),分別是頂點(diǎn)和無向邊,又由于我們是使用

    2024年02月05日
    瀏覽(13)
  • 【數(shù)據(jù)結(jié)構(gòu)】鄰接矩陣法

    【數(shù)據(jù)結(jié)構(gòu)】鄰接矩陣法

    頂點(diǎn)用一維數(shù)組Vex表示,其中可存放較為復(fù)雜的信息(如下標(biāo)),邊表用二維數(shù)組Edge表示,存放邊的信息(兩頂點(diǎn)之間有直接相連的邊為1,否則為0)。 ?如何求頂點(diǎn)的入度?、出度? 對于無向圖? 第 i 個節(jié)點(diǎn)的度: 該結(jié)點(diǎn)所在行列的非0元素個數(shù) 對于有向圖? 第i個節(jié)點(diǎn)的

    2024年02月12日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)之鄰接表

    數(shù)據(jù)結(jié)構(gòu)之鄰接表

    鄰接表是一種表示圖的數(shù)據(jù)結(jié)構(gòu),它通過鏈表的形式,將每個節(jié)點(diǎn)的鄰居節(jié)點(diǎn)記錄下來。具體原理如下: 對于每個節(jié)點(diǎn),我們創(chuàng)建一個鏈表。鏈表中存儲該節(jié)點(diǎn)所連接的所有邊的信息。 對于每條邊,我們在兩個節(jié)點(diǎn)之間的鏈表中分別存儲該邊的信息。例如,如果節(jié)點(diǎn)A和節(jié)點(diǎn)

    2024年02月02日
    瀏覽(14)
  • 數(shù)據(jù)結(jié)構(gòu)——圖篇(鄰接矩陣、鄰接表、深度優(yōu)先搜索、廣度優(yōu)先搜索)

    描述 圖比樹更為復(fù)雜,展現(xiàn)的是一種多對多的關(guān)系,圖的結(jié)構(gòu)是任意兩個數(shù)據(jù)對象之間都可能存在某種特定的關(guān)系的數(shù)據(jù)結(jié)構(gòu) 概念 頂點(diǎn) : 基本介紹 頂點(diǎn)集合表示為V集合,要求圖中頂點(diǎn)至少要有一個,即V集合不能為空集。通常使用|V|來表示頂點(diǎn)的個數(shù),通常使用E(V)來表示

    2024年02月04日
    瀏覽(24)
  • 24考研數(shù)據(jù)結(jié)構(gòu)-圖的存儲結(jié)構(gòu)鄰接矩陣

    24考研數(shù)據(jù)結(jié)構(gòu)-圖的存儲結(jié)構(gòu)鄰接矩陣

    【1】頂點(diǎn)的結(jié)點(diǎn)結(jié)構(gòu) ——————— | data | firstarc | ——————— data數(shù)據(jù)域:儲存頂點(diǎn)vi firstarc鏈域:指向鏈表中第一個結(jié)點(diǎn) 【2】弧的結(jié)點(diǎn)結(jié)構(gòu) —————————— | adjvex | info | nextarc | —————————— adjvex鄰接點(diǎn)域:與頂點(diǎn)vi鄰接的點(diǎn)在圖中的位置 info數(shù)據(jù)域

    2024年02月14日
    瀏覽(16)
  • 數(shù)據(jù)結(jié)構(gòu)-鄰接矩陣的創(chuàng)建與遍歷

    上篇文章已經(jīng)介紹了鄰接矩陣的具體作用與如果利用鄰接矩陣尋找相鄰頂點(diǎn),這次介紹重點(diǎn)為鄰接矩陣的創(chuàng)建與兩種遍歷方式 鄰接矩陣的創(chuàng)建 其結(jié)構(gòu)體需要能記錄頂點(diǎn)、頂點(diǎn)數(shù)、邊數(shù)及鄰接矩陣,即 創(chuàng)建方式則為讀入邊數(shù)、頂點(diǎn)數(shù)即各邊的兩個頂點(diǎn)和權(quán)值 圖的遍歷 DFS(深

    2024年02月20日
    瀏覽(17)
  • 數(shù)據(jù)結(jié)構(gòu)--圖的存儲鄰接表法

    數(shù)據(jù)結(jié)構(gòu)--圖的存儲鄰接表法

    鄰接矩陣: 數(shù)組實(shí)現(xiàn)的順序存儲,空間復(fù)雜度高,不適合存儲稀疏圖 鄰接表: 順序+鏈?zhǔn)酱鎯?無向圖: 邊結(jié)點(diǎn)的數(shù)量是 2|E|, 整體空間復(fù)雜度為 O(|V| + 2|E|) 有向圖: 邊結(jié)點(diǎn)的數(shù)量是 |E|, 整體空間復(fù)雜度為 O(|V| + |E|) 圖的鄰接表表示方式并不唯一 color{red}圖的鄰接表表示方

    2024年02月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包