日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.2.3 十字链表

發(fā)布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.2.3 十字链表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

相關(guān)定義

  • 十字鏈表適用于有向圖。
  • 十字鏈表時有向圖的另一種鏈?zhǔn)酱鎯Y(jié)構(gòu)。(鄰接表也是鏈?zhǔn)?#xff09;
  • 十字鏈表中:
    對應(yīng)于有向圖中每個頂點都有一個結(jié)點,稱此類結(jié)點為頂點結(jié)點。
    對應(yīng)于有向圖中每一條弧都有一個結(jié)點,稱此類結(jié)點為弧結(jié)點。

  • 頂點結(jié)點
    由 3 個域組成
    1、data域 :存儲和頂點相關(guān)的信息,如頂點的名稱。
    2、firstin域 :指向以該頂點為弧頭的第一個弧結(jié)點。
    3、firstout域 :指向以該頂點為弧尾的第一個弧結(jié)點。

  • 弧結(jié)點
    由5個域組成
    1、尾域 / tailvex域 :表示弧尾所在頂點在圖中的位置。
    2、頭域 / headvex域 : 表示弧頭所在頂點在圖中的位置。
    3、鏈域 hlink域 : 指向弧頭相同的下一條弧。
    4、鏈域 tlink域 : 指向弧尾相同的下一條弧。
    5、info域 : 指向該弧的相關(guān)信息。

  • 十字鏈表示例(僅限有向圖)

十字鏈表存儲表示

#define MAX_VERTEX_NUM 20//弧結(jié)點 typedef struct ArcBox {int tailvex, headvex; //該弧的尾和頭頂點的位置struct ArcBox *hlink, *tlink; //分別為弧頭相同和弧尾相同的弧的鏈域InfoType *info; } ArcBox; //頂點結(jié)點 typedef struct VexNode {VertexType data;// 分別指向該頂點的第一條入弧和出弧ArcBox *firstin, *firstout; } VexNode;// 表示一個有向圖整體 typedef struct {VexNode xlist[MAX_VERTEX_NUM]; // 表頭向量,各個頂點int vexnum, arcnum; // 有向圖的當(dāng)前頂點數(shù)和弧數(shù) } OLGraph;

代碼實現(xiàn):建立十字鏈表( n 個頂點和 e 條弧)

Status CreateDG(OLGraph &G) {// 采用十字鏈表存儲表示,構(gòu)造有向圖 G(G.kind = DG)scanf(&G.vexnum, &G.arcnum, &IncInfo);// 初始化各個表頭頂點for(i=0; i<G.vexnum; ++i){scanf(&G.xlist[i].data);G.xlist[i].firstin = NULL;G.xlist[i].firstout = NULL;}for(k=0; k<G.arcnum; k++){scanf(&v1, &v2); // v1 和 v2 分別是一條弧的起點和終點i = LocateVex(G, v1); // 確定 v1 和 v2 在 G 中的位置j = LocateVex(G, v2);p = (ArcBox *)malloc(sizeof(ArcBox));*p = {i, j, G.xlist[j].firstin, G.xlist[i].firstout, NULL}; // 對弧結(jié)點的賦值G.xlist[j].firstin = G.xlist[i].firstout = p; // 完成入弧和出弧鏈頭的插入if(IncInfo){Input(*p->info);}} }
  • 十字鏈表的特點
    1、僅適用于 有向圖
    2、即容易找到以 vi 為尾的弧,也容易找到以 vi 為頭的弧,因而容易求得頂點的出度和入度。
    3、若 輸入的頂點信息 即為 頂點的編號,則建立鄰接表的時間復(fù)雜度為 O( n+e )
    否則,需要通過查找才能得到頂點在圖中位置,則時間復(fù)雜度為 O( n*e )

總結(jié)

以上是生活随笔為你收集整理的7.2.3 十字链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。