鄰接表 十字鍊錶

2021-08-30 06:43:23 字數 2227 閱讀 8692

每一行都可以看成乙個單鏈表,第一行中,v0-1-3可以得到,v0的出度為v1和v3。

鄰接表完整**:

#include using namespace std;

const int max_v = 15;

//邊節點

typedef struct edge_node enode,*penode;

//表節點

typedef struct list_node lnode, *plnode;

int main()

//輸出

cout <

display( list, v );

cout << "clear:\n";

clear( list, v );

return 0;

}void addedge( char v1, char v2, plnode list, int v )

}}void display( plnode list, int v )

cout

p = p->next;

delete todel;

}cout << endl;}}

重新定義表節點結構:增加了兩個指標firstin,firstout。分別用來指向該頂點的入(出)邊表中第乙個結點。

firstin表示入邊表頭指標,指向該頂點的入邊表中第乙個結點;

firstout表示出邊表頭指標,指向該頂點的出邊表中第乙個結點;

tailvex是指弧起點在頂點的下標,

headvex是指弧終點在頂點表中的下標,

headlink是指入邊表指標域,指向終點相同的一下條邊

taillink是指出邊表指標域,指向起點相同的下一條邊。

對比與鄰接表相比,這裡的 taillink 指標就相當於鄰接表裡的那個指標,指向出度的下乙個節點。而這裡的 headlink 就是新增加的用來記錄入度的指標。

首先,橫著看:每一行都可以看出單鏈表,把從 firstout 出來的串起來就是出度(類似鄰接表);

豎著看(不太明顯):從 headlink 出來的指標指向串起來,都是入度節點。

那為什麼要重複儲存節點資訊呢?例如圖中的0存了2次,1存了3次等。這是為了方便找入度節點。試想,鄰接錶用乙個指標乙個節點資訊來儲存方便找出度,那麼要是出度入度都方便找,自然要給入度也加上乙個指標(headlink)和乙個資料域(tailvex)。這樣當找到入度的邊接節點,取出 headlink 就找到入度節點了。

將邊節點結構分割:

入度:headlink + tailvex;

出度:taillink + headvex;

十字鍊錶**:

#include #include using namespace std;

const int max_v = 15;

//邊節點

typedef struct edge_node enode,*penode;

//表節點

typedef struct list_node lnode, *plnode;

int main()

//輸出

cout <

display( list, v );

cout << "clear:\n";

clear( list, v );

return 0;

}void addedge( char v1, char v2, plnode list, int v )

int getindex( char x, plnode list, int v )

cout

p = p->headlink;

}cout

p = p->taillink;

delete todel;

}cout << endl;}}

6 2 3 十字鍊錶 鄰接多重表

十字鍊錶法 用於儲存有向圖 鄰接多重表 用於儲存無向圖 十字鍊錶法 通過乙個指標找到指向的,通過另乙個結點找到被指向的 只要順著兩個指標就能很容易的找到入度和出度 注意 十字鍊錶只用於儲存有向圖 在無向圖中,如果進行刪除操作需要刪除多份檔案,有冗餘,優化這個鄰接表 鄰接多重表用於存放無向圖,每個結點...

十字鍊錶(Java)

對於有向圖來說,鄰接表是有缺陷的。關心了出度問題,想要了解入度情況就必須要遍歷整個圖才能知道。反之也一樣。那麼,這一節就介紹有向圖的一種儲存方法,它能將鄰接表和逆鄰接表結合起來 十字鍊錶。定義頂點表結點結構 vertex firstin firstout 其中,firstin表示入邊表頭指標,指向該...

十字鍊錶 Working routine

工作使艾奇快樂。勤奮的工作為國家直接貢獻了gdp,艾奇認為只要對國家有利,即使犧牲自己生命也心甘情願,絕不會因為自己可能受到禍害而躲開。當艾奇無聊的時候,她就會去工作,然而並不是每次工作都是輕鬆而愉悅的。當天艾奇又一次來到了學校,等待著她的是乙個有n 行m 列的巨大的矩陣和q個任務。對於每個任務,艾...