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