您好,登錄后才能下訂單哦!
這篇文章主要介紹“數(shù)據(jù)庫怎么實現(xiàn)鄰接多重表”,在日常操作中,相信很多人在數(shù)據(jù)庫怎么實現(xiàn)鄰接多重表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”數(shù)據(jù)庫怎么實現(xiàn)鄰接多重表”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
1.引言:
如果我們在應(yīng)用中關(guān)注的是頂點 ,那么鄰接表是很好的選擇 ,可是如果是重點關(guān)注邊 那么 鄰接表就麻煩了
若要刪除左邊的(V0,V2)這條邊,需要對圖下表的陰影兩個結(jié)點進行刪除操作。
2.鄰接多重表的存儲結(jié)構(gòu):
iVex和jVex:是與某條邊依附的兩個頂點在頂點表中的下標。
iLink:指向依附頂點iVex的下一條邊。
jLink:指向依附頂點jVex的下一條邊。
3.鄰接多重表示意圖繪制:
鄰接多重表 typedef char Vtype //頂點類型 typedef int Etype //權(quán)值類型 #definde MAXV 100; typedef struct edgeNode // 邊 表示邊的個數(shù) { int ivex; //一條邊的一端 int jvex; //一條邊的另一端 struct edgeNode *ilink; //依賴于頂點ivex的下一條邊 struct edgeNode *jlink;//依賴于頂點jvex的下一條邊 type weight;//邊 權(quán)值 }EdgeNode; typedef struct Vnode //頂點表 節(jié)點 { Vtype data; EdgeNode* firstEdge; //對應(yīng)的一個邊 }VNODE; // typedef struct { VNODE adjlist[MAXV]; int numV;//當前頂點數(shù) int numE;//當前邊數(shù) }GraphAdjList; void CreateALGraph(GraphAdjList* G) { int i,j,k; EdgeNode* e= NULL; cout<<輸入頂點數(shù)"; cin>>G->numV; cout<<輸入邊數(shù)"; cin>>G->numE; for(i=0;i<G->numV;i++)//建立頂點信息 { cin >> G->adjlist[i].data; //輸入頂點信息 G->adjlist[i].firstEdge = NULL; //邊表節(jié)點 為空 } for(k=0;k<G->numE;k++)//建立邊信息 { cout<<"輸入邊的開始"; cin>>i; cout<<"輸入邊的結(jié)尾"; cin>>j; //注意每次插入新節(jié)點都是在鏈表的表頭進行 有點繞 e = new EdgeNode; //(1,3) 這個線的插入是相互的對于兩個點1,3來說 分別不同的因此有兩個new e->ivex = i; e->ilink = G->adjlist[i].firstEdge;//以前是e->next = j...的。現(xiàn)在是當前的 G->adjlist[i].firstEdge = e; e->jvex = j; e->jlink = G->adjlist[j].firstEdge; G->adjlist[j].firstEdge = e; } }
到此,關(guān)于“數(shù)據(jù)庫怎么實現(xiàn)鄰接多重表”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。