zoukankan      html  css  js  c++  java
  • 图写成一个类

    只集成了最基本的功能。。也就是加边和取相邻点。

     1 const int maxn=1e4+5, maxm=1e5+5;
     2 
     3 struct Edge{
     4     int to, v, next;
     5 };
     6 
     7 class Graph{
     8 private:
     9     int cntedge;
    10     int fir[maxn];
    11     Edge edge[maxn];
    12 public:
    13     class iterator;
    14     Graph(){
    15         cntedge=0;
    16         return;
    17     }
    18     void addedge(int x, int y, int v){
    19         ++cntedge;
    20         Edge &e=edge[cntedge];
    21         e.to=y, e.v=v, e.next=fir[x];
    22         fir[x]=cntedge;
    23         return;
    24     }
    25 };
    26 
    27 class Graph::iterator{
    28 private:
    29     int nowedge;
    30     Graph *g;
    31 public:
    32     iterator(Graph *graph, int x){
    33         g=graph;
    34         nowedge=g->fir[x];
    35         return;
    36     }
    37     iterator& operator ++(){
    38         nowedge=g->edge[nowedge].next;
    39         return *this;
    40     }
    41     int operator *(){
    42         return g->edge[nowedge].to;
    43     }
    44 };

    思想大概是这样的:定义一个图类,然后再定义一个迭代器来访问一个节点对应的边。定义迭代器时要指定对应的图,对应的结点。下一条边用++,取对应结点用*。。

  • 相关阅读:
    封装cookie
    敏感词过滤
    面向对象改成选项卡
    正则表达式
    cookie
    DOM
    系统对象
    cookie记录用户名
    6个原则
    23中设计模式
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7452932.html
Copyright © 2011-2022 走看看