建图(Graph类的插点和插边实现)

来源:互联网 发布:中国少儿编程网 编辑:程序博客网 时间:2024/05/24 06:36

好吧。。。N久没写过代码了。。。。

最近忙着复习期末加六级再加上坑爹的游戏休闲,什么ACM都木有碰啊。。坑爹。。

决定这两个星期把数据结构书上的代码都敲一遍。

#include <iostream>#include <cstdio>using namespace std;struct ArcNode{    ArcNode *nextarc;    int id;    int weight;};struct VexNode{    ArcNode *firstarc;    int id;};class Graph{    private:        int n;        int max;        VexNode *adjlist;        bool *visit;    public:        Graph( int l )        {            n=0;    max=l;            adjlist=new VexNode[l];            visit=new bool[l];        }        ~Graph()        {            delete []adjlist;            delete []visit;        }        void instArc( int a,int b,int w=0 );        void instVex( int a );};void Graph::instVex( int a )//插点{    if( n<max ) adjlist[n++].id=a;}void Graph::instArc( int a,int b,int w ) //不带等于0  //插边{    ArcNode *p=new ArcNode;    ArcNode *q=new ArcNode;    p->id=b;    q->id=a;    p->nextarc=adjlist[a].firstarc;    q->nextarc=adjlist[b].firstarc;    adjlist[a].firstarc=p;    adjlist[b].firstarc=q;}int main(){    Graph g(10);    int i;    for( i=0;i<4;i++ )  g.instVex(i);    g.instArc(0,1);    g.instArc(0,2);    g.instArc(3,1);    g.instArc(3,2);    return 0;}


原创粉丝点击