這是用python刷CCF的第二篇。

還是基礎回顧,,,

由於CCF這個考試後面有一道題專門是圖論,可我 圖 極差,這就很尷尬。

來自18線小城市的我上大學前根本不知道啥是編程,現在都大二了還是啥TM都不會,有時候想想某些大佬小學開始編程,真他媽,,,唉,跑題了,繼續吧。

所謂基礎不牢,地動山搖,所以第二篇還是回顧下基礎吧,哈哈。

如果不知道啥是鄰接表,以及原理,請看這一篇(侵刪)

用鄰接表表示圖 - CSDN博客?

blog.csdn.net
圖標

W = 5#鄰接矩陣的邊長
INF = float(inf)
#直接搞有權圖算了
Pic = [[0,8,INF,5,INF],
[INF,0,3,INF,INF],
[INF,INF,0,INF,6],
[INF,INF,9,0,INF],
[INF,INF,INF,INF,0]]

headList = []
class ANode:
def __init__(self,adjvex,Next,weight):
self.Adjvex = adjvex
self.Next = Next
self.Weight = weight
class VNode:
def __init__(self,data,firstarc):
self.Data = data
self.Firstarc = firstarc
def InitVect():#初始化每個節點
for i in range(1,W+1):
newnode = VNode(i,None)#data就當是序號妥了
headList.append(newnode)
def CreateAdjList():
for startpoint in headList:
#這裡正好是用序號做了data的值
for i in range(W-1,-1,-1):#頭插法,所以要從大到小遍歷
if Pic[startpoint.Data-1][i]<INF:
p = ANode(i+1,None,Pic[startpoint.Data-1][i])
p.Next = headList[startpoint.Data-1].Firstarc
headList[startpoint.Data-1].Firstarc = p
def ShowList(item):
while(item is not None):
if item.Next is not None:
print(item.Adjvex,(weight,item.Weight,),->,end=)
elif item is not None:
print(item.Adjvex,(weight,item.Weight,), end=)
item = item.Next
print(
)
if __name__==__main__:
InitVect()
CreateAdjList()
for i in range(len(headList)):
print(NO%d AdjList:%(i+1))
ShowList(headList[i].Firstarc)

運行結果是這樣的:

NO1 AdjList:

1 (weight 0 ) ->2 (weight 8 ) ->4 (weight 5 )

NO2 AdjList:

2 (weight 0 ) ->3 (weight 3 )

NO3 AdjList:

3 (weight 0 ) ->5 (weight 6 )

NO4 AdjList:

3 (weight 9 ) ->4 (weight 0 )

NO5 AdjList:

5 (weight 0 )

反正估計大概可能也沒人看,那就先這樣???

好吧,先這樣。。。


推薦閱讀:
查看原文 >>
相關文章