這種表示法是以串列結構來表示圖形, 它有點類似相鄰矩陣, 不過忽略掉矩陣中0 的部分, 直接把1 的部分放進節點裡. 如此一來可以有效避免浪費儲存空間.
相關特性 :
下面討論範例(無向圖)使用串列節點 :
至於相鄰陣列法及相鄰串列表示圖形的優缺點整理如下 :
範例代碼 :
* ch07.h 代碼 :
- #include
- using namespace std;
- /*
- * 使用相鄰串列來表式圖形 (P7-12)
- */
- void ch07_03(bool b);
- #include "ch07.h"
- class graphicPoint{
- public:
- int val;
- class graphicPoint *next;
- graphicPoint(){
- next = NULL;
- val = -1;
- }
- };
- void ch07_03(bool b) {
- if(b) {
- class graphicPoint head[6];
- int data[14][2] = {{1,2}, {2,1}, {1,5}, {5,1}, {2,3}, {3,2}, {2,4}, {4,2}, {3,4}, {4,3}, {3,5}, {5,3}, {4,5}, {5,4}};
- for(int i=0; i<14; i++) {
- int tmpi = data[i][0];
- int tmpj = data[i][1];
- graphicPoint *npt = new graphicPoint;
- npt->val = tmpj;
- graphicPoint *pt = &head[tmpi];
- while(pt->next != NULL)
- pt = pt->next;
- pt->next = npt;
- }
- for(int i=1; i<6; i++) {
- graphicPoint *pt = head[i].next;
- cout << "頂點 " << i << "=>";
- while(pt!=NULL) {
- cout << "[" << pt->val << "] ";
- pt = pt->next;
- }
- cout << endl;
- }
- }
- }
執行結果 :
補充說明 :
* [ 資料結構 小學堂 ] 鏈結串列 : 單向鏈結串列
沒有留言:
張貼留言