新聞中心
鄰接表是一種表示圖的數(shù)據(jù)結(jié)構(gòu),它通過一個(gè)數(shù)組來(lái)存儲(chǔ)圖中的頂點(diǎn),以及一個(gè)二維數(shù)組來(lái)存儲(chǔ)頂點(diǎn)之間的邊,在Python中,我們可以使用字典和列表來(lái)實(shí)現(xiàn)鄰接表,以下是詳細(xì)的技術(shù)教學(xué):

創(chuàng)新互聯(lián)公司是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護(hù)、成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站備案、服務(wù)器租用、國(guó)際域名空間、軟件開發(fā)、微信平臺(tái)小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運(yùn)營(yíng)推廣經(jīng)驗(yàn)的科技公司,有著多年的網(wǎng)站建站經(jīng)驗(yàn),致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個(gè)面向全國(guó)乃至全球的業(yè)務(wù)窗口:建站聯(lián)系電話:13518219792
1、定義頂點(diǎn)類
我們需要定義一個(gè)頂點(diǎn)類,用于存儲(chǔ)頂點(diǎn)的信息,這個(gè)類可以包含頂點(diǎn)的名稱、鄰接點(diǎn)等信息。
class Vertex:
def __init__(self, name):
self.name = name
self.neighbors = []
2、添加邊
接下來(lái),我們需要為頂點(diǎn)類添加一個(gè)方法,用于向鄰接表中添加邊,這個(gè)方法需要接收兩個(gè)參數(shù),分別表示邊的起始頂點(diǎn)和結(jié)束頂點(diǎn)。
class Vertex:
# ...其他代碼...
def add_edge(self, neighbor):
self.neighbors.append(neighbor)
neighbor.add_edge(self) # 將當(dāng)前頂點(diǎn)添加到鄰居的鄰接表中,表示無(wú)向圖
3、創(chuàng)建鄰接表
現(xiàn)在,我們可以創(chuàng)建一個(gè)鄰接表,并向其中添加頂點(diǎn)和邊,我們創(chuàng)建一個(gè)空的字典,用于存儲(chǔ)鄰接表,我們創(chuàng)建一些頂點(diǎn),并將它們添加到鄰接表中,我們?yōu)檫@些頂點(diǎn)添加邊。
adjacency_list = {}
vertex1 = Vertex("A")
vertex2 = Vertex("B")
vertex3 = Vertex("C")
vertex4 = Vertex("D")
adjacency_list[vertex1.name] = vertex1
adjacency_list[vertex2.name] = vertex2
adjacency_list[vertex3.name] = vertex3
adjacency_list[vertex4.name] = vertex4
vertex1.add_edge(vertex2)
vertex1.add_edge(vertex3)
vertex2.add_edge(vertex4)
4、遍歷鄰接表
為了演示如何使用鄰接表,我們可以編寫一個(gè)函數(shù),用于遍歷鄰接表中的所有頂點(diǎn)和邊,這個(gè)函數(shù)可以接收一個(gè)頂點(diǎn)作為參數(shù),并輸出該頂點(diǎn)及其鄰居的信息。
def traverse_adjacency_list(vertex):
print(f"訪問頂點(diǎn):{vertex.name}")
for neighbor in vertex.neighbors:
print(f"鄰居:{neighbor.name}")
5、測(cè)試代碼
我們可以使用上面的代碼來(lái)測(cè)試我們的鄰接表實(shí)現(xiàn),我們將遍歷鄰接表中的所有頂點(diǎn)和邊,并輸出結(jié)果。
for vertex_name, vertex in adjacency_list.items():
print(f"開始遍歷頂點(diǎn):{vertex_name}")
traverse_adjacency_list(vertex)
print(f"完成遍歷頂點(diǎn):{vertex_name}")
通過以上步驟,我們成功地實(shí)現(xiàn)了一個(gè)鄰接表,在實(shí)際應(yīng)用中,我們還可以根據(jù)需要對(duì)鄰接表進(jìn)行擴(kuò)展,例如支持權(quán)重圖、有向圖等,鄰接表是一種非常實(shí)用的數(shù)據(jù)結(jié)構(gòu),可以幫助我們更好地表示和處理圖的問題。
網(wǎng)站題目:python如何生成鄰接表
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dpscgpd.html


咨詢
建站咨詢
