C++之路進階——邊表


邊表:利用邊的關系來表示一個圖。

用到數組:

            head//head[i]表示從i點出發的第一條邊的編號;

            next[i]//與第i條邊起點相同的下一條邊的編號;

                 a[i]//第i條邊的終點;

                  val[i]//第i條邊的權值;

       建立邊表:

                  void add(int u,int v,int c)//u表示起點v表示終點c表示由u到v的權值

                      {

                          size++//邊的編號加一;

                         next[size]=head[u]//將u點出發的原第一條邊的編號改為新邊的下一條邊的編號;

                         head[u]=size;//把由u點出發的第一條邊改為剛加入的邊的編號;

                         a[i]=v//第i條邊的終點為v;

                         val[i]=c;//第i條邊的權值為c;

                         }

      //在邊表當中插入元素,實在邊表最開始添加的。

       利用邊表遍歷圖的由u點出發的所有邊:

              for(int i=head[u];~i;i=next[i])//next數組相當於指針,連接起點相同的個個點。

圖片解釋:

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM