一天一個(gè)數(shù)據(jù)結(jié)構(gòu)知識——十字鏈表、鄰接多重表
????????十字鏈表是有向圖的一種存儲方式,可以有效解決結(jié)點(diǎn)的入度難以計(jì)算的問題。為了既能存儲發(fā)出的弧,也能存儲指向結(jié)點(diǎn)的弧,因此在存儲結(jié)點(diǎn)時(shí)除了結(jié)點(diǎn)的數(shù)據(jù)外還要存儲兩個(gè)指針,一個(gè)指向該結(jié)點(diǎn)作為弧頭的第一條弧,一個(gè)指向該節(jié)點(diǎn)作為弧尾的第一條弧。

????????因此對于弧的存儲結(jié)構(gòu)也要有所不同,首先要存儲弧的弧頭和弧尾,同時(shí)還要存儲兩個(gè)指針,一個(gè)指向以該節(jié)點(diǎn)為弧頭的下一條弧,一個(gè)指向以該節(jié)點(diǎn)為弧尾的下一條弧。
????????鄰接多重表則是無向圖的的一種存儲方式,其也能有效避免鄰接表帶來的邊存儲冗余和結(jié)點(diǎn)和邊刪除修改的復(fù)雜度較高的問題。不同于鄰接表每個(gè)邊存儲的是指向的結(jié)點(diǎn)編號和指向下一個(gè)節(jié)點(diǎn)的指針,鄰接多重表的邊存儲的是邊兩個(gè)頂點(diǎn)的編號和兩個(gè)指針,兩個(gè)指針分別指向依附于不同兩個(gè)頂點(diǎn)的下一條邊。

標(biāo)簽: