青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

圖的鄰接表實現(xiàn)

Adjacency List of the Graph

eryar@163.com

一、圖的鄰接表

  鄰接表(Adjacency List)是圖的一種鏈式存儲結構。在鄰接表中,對圖中每個頂點建立一個單鏈表,第i個單鏈表中的結點表示依附于頂點Vi的邊,對有向圖是以頂點Vi為尾的弧。如下圖所示的圖用鄰接表表示如下:

image   image

根據(jù)上圖來定義用鄰接表表示圖的數(shù)據(jù)結構。當用鄰接表來表示圖時,圖是由頂點序列組成的,在每個頂點中,記錄下與該頂點相連的頂點在頂點序列中的位置。相關的數(shù)據(jù)結構如下所示:

   1:  struct SVertexNode
   2:  {
   3:      string        data;
   4:      vector<int> vecLoc;
   5:  };
   6:   
   7:  typedef struct SEdge
   8:  {
   9:      int iInitialNode;
  10:   
  11:      int iTerminalNode;
  12:   
  13:  }Edge;
  14:   
  15:  typedef struct Graph
  16:  {
  17:      int iVertexNum;
  18:      int iEdgeNum;
  19:      vector<SVertexNode> vecVertex;
  20:  }Graph;
 
二、C++實現(xiàn)

 

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

用C++實現(xiàn)上圖所示的圖,代碼如下:

   1:  //------------------------------------------------------------------------------
   2:  //    Copyright (c) 2012 eryar All Rights Reserved.
   3:  //
   4:  //        File    : Main.cpp
   5:  //        Author  : eryar@163.com
   6:  //        Date    : 2012-8-25 17:11
   7:  //        Version : 0.1v
   8:  //
   9:  //    Description : Use Adjacency List data structure to store Digraph.
  10:  //
  11:  //==============================================================================
  12:   
  13:  #include <vector>
  14:  #include <string>
  15:  #include <iostream>
  16:  using namespace std;
  17:   
  18:  struct SVertexNode
  19:  {
  20:      string        data;
  21:      vector<int> vecLoc;
  22:  };
  23:   
  24:  typedef struct SEdge
  25:  {
  26:      int iInitialNode;
  27:   
  28:      int iTerminalNode;
  29:   
  30:  }Edge;
  31:   
  32:  typedef struct Graph
  33:  {
  34:      int iVertexNum;
  35:      int iEdgeNum;
  36:      vector<SVertexNode> vecVertex;
  37:  }Graph;
  38:   
  39:  ///////////////////////////////////////////////////////////////////////////////
  40:  // Functions of Graph
  41:  void    Initialize(Graph& g, int v);
  42:  Edge    MakeEdge(int v, int w);
  43:  void    InsertEdge(Graph& g, const Edge& e);
  44:  void    ShowGraph(const Graph& g);
  45:   
  46:  ///////////////////////////////////////////////////////////////////////////////
  47:  // Main function.
  48:   
  49:  int main(int agrc, char* argv[])
  50:  {
  51:      Graph   aGraph;
  52:   
  53:      // Initialize the graph.
  54:      Initialize(aGraph, 4);
  55:   
  56:      // Insert some edges to make graph.
  57:      InsertEdge(aGraph, MakeEdge(0, 1));
  58:      InsertEdge(aGraph, MakeEdge(0, 2));
  59:      InsertEdge(aGraph, MakeEdge(2, 3));
  60:      InsertEdge(aGraph, MakeEdge(3, 0));
  61:   
  62:      // Show the graph.
  63:      ShowGraph(aGraph);
  64:   
  65:      return 0;
  66:  }
  67:   
  68:  ///////////////////////////////////////////////////////////////////////////////
  69:   
  70:  /**
  71:  * brief    Initialize the graph.
  72:  *
  73:  *       v: vertex number of the graph.
  74:  */
  75:  void Initialize( Graph& g, int v )
  76:  {
  77:      char    szData[6];
  78:      SVertexNode node;
  79:   
  80:      g.iVertexNum    = v;
  81:      g.iEdgeNum      = 0;
  82:   
  83:      for (int i = 0; i < v; i++)
  84:      {
  85:          sprintf(szData, "V%d", i+1);
  86:          node.data   = szData;
  87:          g.vecVertex.push_back(node);
  88:      }
  89:  }
  90:   
  91:  /**
  92:  * brief    Make an edge by initial node and terminal node.
  93:  */
  94:  Edge MakeEdge( int v, int w )
  95:  {
  96:      Edge    e;
  97:   
  98:      e.iInitialNode  = v;
  99:      e.iTerminalNode = w;
 100:   
 101:      return e;
 102:  }
 103:   
 104:  /**
 105:  * brief    Insert an edge to the graph.
 106:  */
 107:  void InsertEdge( Graph& g, const Edge& e )
 108:  {
 109:      g.vecVertex.at(e.iInitialNode).vecLoc.push_back(e.iTerminalNode);
 110:   
 111:      // If the graph is Undigraph, need do something here...
 112:      //g.vecVertex.at(e.iTerminalNode).vecLoc.push_back(e.iInitialNode);
 113:   
 114:      g.iEdgeNum++;
 115:  }
 116:   
 117:  /**
 118:  * brief    Show the graph.
 119:  */
 120:  void ShowGraph( const Graph& g )
 121:  {
 122:      for (int i = 0; i < g.iVertexNum; i++)
 123:      {
 124:          cout<<"Node "<<i<<"("<<g.vecVertex.at(i).data<<")";
 125:   
 126:          for (int j = 0; j < g.vecVertex.at(i).vecLoc.size(); j++)
 127:          {
 128:              cout<<"->"<<g.vecVertex.at(i).vecLoc.at(j);
 129:          }
 130:   
 131:          cout<<endl;
 132:      }
 133:  }
 
三、輸出結果
   1:  Node 0(V1)->1->2
   2:  Node 1(V2)
   3:  Node 2(V3)->3
   4:  Node 3(V4)->0
   5:  Press any key to continue
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线一区日本视频| 香港成人在线视频| 欧美不卡三区| 亚洲欧洲另类| 亚洲开发第一视频在线播放| 欧美96在线丨欧| 亚洲乱码国产乱码精品精98午夜| 欧美电影在线观看| 欧美日产在线观看| 亚洲综合精品自拍| 亚洲欧美成人精品| 尤物视频一区二区| 亚洲国产精品专区久久| 欧美激情综合五月色丁香小说| 99视频超级精品| 亚洲欧美日韩一区二区三区在线观看| 国产亚洲精品aa| 亚洲国产精品一区二区www| 欧美另类视频| 欧美制服丝袜| 欧美国产日韩一区二区在线观看| 亚洲一区在线观看视频| 欧美一区二区三区在线| 亚洲国产综合在线| 中文在线资源观看网站视频免费不卡 | 午夜视频一区在线观看| 久久国产婷婷国产香蕉| 一区二区三区日韩| 欧美在线亚洲| 亚洲午夜精品一区二区三区他趣| 午夜精品亚洲一区二区三区嫩草| 亚洲精品1区| 午夜日韩福利| 在线视频一区二区| 美女诱惑一区| 久久激情视频免费观看| 欧美日韩国产小视频在线观看| 久久久久国产精品一区二区| 欧美精品成人在线| 裸体女人亚洲精品一区| 欧美视频中文在线看| 欧美成人性生活| 国产乱子伦一区二区三区国色天香| 欧美大片在线观看一区| 国产伦精品一区二区三区在线观看| 亚洲国产三级网| 国产有码一区二区| 亚洲尤物影院| 中文国产亚洲喷潮| 欧美激情综合在线| 欧美成人一区二区三区在线观看| 国产日韩欧美成人| 亚洲午夜小视频| 亚洲社区在线观看| 欧美精品在线观看一区二区| 久久综合久色欧美综合狠狠| 国产精品区二区三区日本| 日韩视频免费| 日韩视频在线观看免费| 麻豆freexxxx性91精品| 裸体一区二区| 国语自产精品视频在线看8查询8| 亚洲综合电影一区二区三区| 亚洲一区制服诱惑| 欧美小视频在线观看| 夜夜嗨av一区二区三区中文字幕| 夜夜狂射影院欧美极品| 欧美另类极品videosbest最新版本| 亚洲盗摄视频| 亚洲精品影院| 欧美日韩岛国| 正在播放亚洲| 欧美一区1区三区3区公司| 国产精品女人久久久久久| 亚洲在线网站| 久久久久国产一区二区三区| 激情久久久久久| 久久综合九色欧美综合狠狠| 免费在线视频一区| 亚洲蜜桃精久久久久久久| 欧美女人交a| 亚洲一区二区三区免费在线观看 | 在线色欧美三级视频| 久久久夜夜夜| 91久久精品国产91久久性色| 日韩亚洲不卡在线| 国产精品久久国产精麻豆99网站| 亚洲小视频在线| 久久久久久亚洲精品不卡4k岛国| 伊人夜夜躁av伊人久久| 女人色偷偷aa久久天堂| 一区二区三区精密机械公司| 欧美一级片久久久久久久| 怡红院精品视频在线观看极品| 免播放器亚洲一区| 中文网丁香综合网| 久久综合五月| 亚洲婷婷综合色高清在线| 国产毛片一区二区| 免费看av成人| 亚洲一区视频| 欧美高清在线视频观看不卡| 亚洲无玛一区| 在线观看亚洲专区| 国产精品久久久久久超碰| 久久久久久午夜| 在线亚洲欧美| 欧美国产日韩a欧美在线观看| 中文在线不卡视频| 亚洲大片av| 国产精品亚洲一区二区三区在线| 久久久蜜桃精品| 一本大道久久a久久精品综合| 久久综合电影| 亚洲综合大片69999| 亚洲欧洲日韩女同| 久久综合色综合88| 亚洲欧美一区二区原创| 91久久精品久久国产性色也91| 国产精品啊啊啊| 欧美精品一区在线发布| 久久女同互慰一区二区三区| 亚洲一区在线观看视频| 亚洲国产精品成人va在线观看| 久久精品理论片| 亚洲综合日韩在线| 日韩亚洲欧美中文三级| 亚洲丰满在线| 红桃视频欧美| 国产日韩一区二区三区| 国产精品xxxav免费视频| 欧美极品在线观看| 欧美www在线| 久久亚洲午夜电影| 久久精精品视频| 性欧美长视频| 欧美亚洲在线观看| 欧美一级播放| 欧美专区18| 99热免费精品| 99成人免费视频| 亚洲精品在线观| 亚洲国产小视频在线观看| 影音先锋亚洲一区| 在线观看亚洲视频啊啊啊啊| 国内久久婷婷综合| 国产一区二区三区无遮挡| 国产午夜亚洲精品不卡| 国产日韩欧美夫妻视频在线观看| 国产欧美精品va在线观看| 国产精品夜夜夜| 国产欧美综合一区二区三区| 国产欧美日韩三级| 国产午夜精品一区二区三区欧美| 国产精品三区www17con| 国产日产亚洲精品| 在线观看欧美一区| 亚洲电影专区| 日韩一级在线| 亚洲欧美日本国产有色| 久久精品亚洲一区| 免费在线亚洲欧美| 亚洲精品日本| 亚洲一区二区三区免费观看| 欧美伊久线香蕉线新在线| 久久免费国产精品1| 欧美韩日一区二区| 欧美亚一区二区| 国产专区欧美精品| 亚洲免费观看视频| 亚洲欧美国产精品va在线观看| 久久www成人_看片免费不卡| 久久蜜桃av一区精品变态类天堂| 欧美福利在线| 在线中文字幕一区| 久久精品成人欧美大片古装| 欧美国产一区二区| 国产噜噜噜噜噜久久久久久久久| 国内不卡一区二区三区| 亚洲精品婷婷| 欧美在线日韩在线| 91久久精品国产91久久性色| 亚洲欧美日本国产专区一区| 麻豆av一区二区三区| 国产精品黄色在线观看| 亚洲福利视频二区| 亚洲欧美日本国产专区一区| 免费在线视频一区| 亚洲午夜精品久久| 欧美高清不卡| 狠狠色丁香婷婷综合| 亚洲小视频在线| 欧美福利视频在线观看| 欧美亚洲网站| 欧美视频一区二区| 亚洲免费成人av| 嫩草成人www欧美| 欧美亚洲一区| 国产精品日韩高清| 中文亚洲免费|