構建帶權路網

來源:互聯網
上載者:User

標籤:nav   sha   部分   cWeb   get   dtd   nod   鄰接矩陣   bar   

    今天來回顧一下帶權路網的儲存構建方法。    如今交通四通八達,路網密集,從一個地方到達另外一個地方,可以有很多條路徑可以選擇,今天我講的就是路網的連通與不連通以及路線的代價(如路程或者顛簸程度等等作為評估路線的標準,取取值)在電腦中怎麼儲存起來,以及如何再現出來。

假設有6個地點,點與點之間有8條直接相連的道路,那麼在txt檔案中主要分為三部分:

第一部分儲存點數和直接相連的路線數,第二部分儲存點的座標值,第三部分儲存路線(如:2  4  5,表示2號點與4好點直接相連,這條路線分配的權值是5),如左圖。

那麼這些關係如何在程式的結構中表現出來呢?

我們可以用一個數組vertex a[點數]來儲存每個點的座標,數組的下標對應點號;接著用一個二維數組int weight[點數][點數]來對應表示點與點之間的串連關係以及權值,如2  4  5,表示成 weight[2][4]=weight[4][2]=5。

好了,話不多說,直接上代碼吧來得更簡單粗暴一點(調皮臉)~^.^~

 

 

 

#include"stdafx.h"#include<stdlib.h>#include"Graph.h"#include"targetver.h"#define MAX_VERTEX_NUM 20typedef struct Vertex{    double x, y;}vertex;typedef struct Graph{    vertex ver[MAX_VERTEX_NUM];    int weight[MAX_VERTEX_NUM][MAX_VERTEX_NUM];    int vexnum;    int arcnum;}graph;void main(){    graph *G;        G = (graph *)malloc(sizeof(graph));    FILE* fp = fopen("information.txt", "r");    if (fp)    {        fscanf(fp, "%d", &(G->vexnum));  //頂點數        fscanf(fp, "%d", &(G->arcnum));  //邊數        for (int i = 0; i <G->vexnum ; i++)  //頂點數組            fscanf(fp, "%lf,%lf", &(G->ver[i].x),&(G->ver[i].y));        int v1, v2, w;  //v1,v2從0開始          for (int i = 0; i < G->arcnum ; i++)  //構造鄰接矩陣,邊的權值關係        {            fscanf(fp, "%d %d %d", &v1, &v2, &w);            G->weight[v1][v2] = w;        }    }fclose(fp);    setOrig(0, 0);    for (int i = 0; i < G->vexnum; i++)    {        drawRectangle(G->ver[i].x,G->ver[i].y);                char label[5];        sprintf(label, "%d", i);                drawText(G->ver[i].x, G->ver[i].y, label);                for (int j = 0; j <G->vexnum; j++)        {            if (G->weight[i][j]>0)            {                moveTo(G->ver[i].x, G->ver[i].y);                lineTo(G->ver[j].x,G->ver[j].y);            }        }    }    getchar();}

接下來就是見證奇蹟的時刻!duang~~duang~~duang~~

構建帶權路網

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.