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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

存图利器——链式前向星

發布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存图利器——链式前向星 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

存圖的各種數據結構,復雜如下

鄰接矩陣? ? O(1)(查詢一條邊)? ? ? O(n)枚舉出邊? ? O(N*N)空間復雜度? ?

前向星  O(n)(查詢一條邊)? ? ? O(n)枚舉出邊? ? O(N)空間復雜度? ? (預處理時間復雜度(O(NlgN)))

鏈式前向星 O(n)(查詢一條邊)? ? ?O(n)枚舉出邊? ? ? O(N)空間復雜度

我們發現對于與一道題若n逼近10^6時,前兩者的時間就不行了,而鏈式前向星還可以支撐這種數據規模

那么鏈式前向星究竟是什么呢?

?

對于和結點u有邊連接的v,我們為其分配一個地址,

那么對于u,我們如何查到這個地址呢?

這個問題引入了鏈式前向星中的head數組和next數組,

head[u]表示與結點u有連邊的第一個點的地址id

而next數組更像是一個指針,對于next[id]令其指向下一個和u有連邊的地址

在這個地址上,我們只要存儲和u相連的是哪個點v即可

代碼如下:

procedure add(u,v:longint);//加入一條從u連向v的有向邊 begininc(tot);//分配地址next[tot]:=head[u]; head[u]:=tot; vet[tot]:=v;//鏈表的插入 end;

那么我們如何實現dfs呢

procedure dfs(id:longint); var point:longint; beginpoint:=head[id];while point<>0 do //一直找下一個地址begindfs(vet[point]);//深搜point:=next[point];//跳到下一個地址end; end;

鏈式前向星就講到這里了

?

轉載于:https://www.cnblogs.com/by-w/p/9816590.html

總結

以上是生活随笔為你收集整理的存图利器——链式前向星的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。