溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫鄰接表有什么特點(diǎn)

發(fā)布時(shí)間:2021-12-08 13:56:18 來源:億速云 閱讀:457 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“數(shù)據(jù)庫鄰接表有什么特點(diǎn)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

2. 鄰接表(無向圖)的特點(diǎn):

有時(shí)候鄰接矩陣并不是一個(gè)很好的選擇:

數(shù)據(jù)庫鄰接表有什么特點(diǎn)

如上圖: 邊數(shù)相對(duì)頂點(diǎn)較少,這種結(jié)構(gòu)無疑是存在對(duì)存儲(chǔ)空間的極大浪費(fèi)。

鄰接表: 數(shù)組和鏈表結(jié)合一起來存儲(chǔ)。

1.)頂點(diǎn)用一個(gè)一位數(shù)組存儲(chǔ)。

2.)每個(gè)頂點(diǎn)Vi的所有鄰接點(diǎn)構(gòu)成一個(gè)線性表,由于鄰接點(diǎn)的個(gè)數(shù)不確定,所以我們選擇單鏈表來存儲(chǔ)。

數(shù)據(jù)庫鄰接表有什么特點(diǎn)


2. 鄰接表(有向圖)的特點(diǎn):

把頂點(diǎn)當(dāng)弧尾建立的鄰接表,這樣很容易就可以得到每個(gè)頂點(diǎn)的出度。

數(shù)據(jù)庫鄰接表有什么特點(diǎn)


有時(shí)為了便于確定頂點(diǎn)的入度或以頂點(diǎn)為弧頭的弧,我們可以建立一個(gè)有向圖的逆鄰接表

數(shù)據(jù)庫鄰接表有什么特點(diǎn)


3. 鄰接表(網(wǎng))的特點(diǎn):

對(duì)于帶權(quán)值的網(wǎng)圖,可以在邊表結(jié)點(diǎn)定義中再增加一個(gè)數(shù)據(jù)域來存儲(chǔ)權(quán)值即可:

數(shù)據(jù)庫鄰接表有什么特點(diǎn)

typedef char Vtype //頂點(diǎn)類型
typedef int Etype //權(quán)值類型
#definde MAXV 100;
typedef struct edgeNode //邊表節(jié)點(diǎn)
{
	int adjvex; //鄰接點(diǎn) 存儲(chǔ)該頂點(diǎn)對(duì)應(yīng)的下標(biāo)
	Etype weight;//邊 權(quán)值
	struct edgeNode *next;
}EdgeNode;

typedef struct Vnode //頂點(diǎn)表 節(jié)點(diǎn)
{
	Vtype data;
	EdgeNode* firstEdge;
}VNODE; //

typedef struct
{
	VNODE adjlist[MAXV];
	int numV;//當(dāng)前頂點(diǎn)數(shù)
	int numE;//當(dāng)前邊數(shù)
}GraphAdjList;  

void CreateALGraph(GraphAdjList* G)
{
	int i,j,k;
	EdgeNode* e= NULL;
	cout<<輸入頂點(diǎn)數(shù)";
	cin>>G->numV;
	cout<<輸入邊數(shù)";
	cin>>G->numE;
	for(i=0;i<G->numV;i++)//建立頂點(diǎn)信息
	{
		cin >> G->adjlist[i].data; //輸入頂點(diǎn)信息
		G->adjlist[i].firstEdge = NULL; //邊表節(jié)點(diǎn) 為空
	}
	for(k=0;k<numE;k++)//建立邊信息
	{
		cout<<"輸入邊的開始";  
		cin>>i;  
		cout<<"輸入邊的結(jié)尾";  
		cin>>j;
		
		e = new EdgeNode; //(1,3) 這個(gè)線的插入是相互的對(duì)于兩個(gè)點(diǎn)1,3來說 分別不同的因此有兩個(gè)new
		e->adjvex = j;
		e->next = G->adjlist[i].firstEdge; //類似與棧里的 node->next = list->head;  list->head = node;
		G->adjlist[i].firstEdge = e;
		
		e = new EdgeNode;
		e->adjvex = i;
		e->next = G->adjlist[j].firstEdge;
		G->adjlist[j].firstEdge = e;
	}
}


對(duì)于無向圖來說一條邊對(duì)應(yīng)都是兩個(gè)頂點(diǎn),所以在一次循環(huán)中就對(duì)i和j分別進(jìn)行了插入  對(duì)于n個(gè)頂點(diǎn)e個(gè)邊來說 O(n+e)

“數(shù)據(jù)庫鄰接表有什么特點(diǎn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI