您的位置:首页 > 其它

郁闷了一段之后,真高兴,把图的创建理解了。keke~

2010-04-15 11:25 351 查看
/*

//图

#include<iostream>

#include<malloc.h>

#define Vnum 20

using namespace std;

typedef struct arcnode

{

int adjvex; //结点的编号

struct arcnode *nextarc;//指向下一结点的指针

}arcnode;

typedef struct vexnode

{

int vertex; //结点数组

arcnode *firstarc; //指向第一条边的指针

}adjlist[Vnum];

typedef struct graphs

{

adjlist a_list; //结点数组

int vexnum,arcnum;//分别表示顶点和边的数量

}graph;

void create(graph *g)

{

int n,e,i,j,k;

arcnode *p;

cout<< "创建一个图:/t";

cout<<"顶点数:/t";

cin>>n;

cout<<"/t/t边 数";

cin>>e;

g->vexnum=n;

g->arcnum=e; //edage

for(i=0;i<n;i++)

{

g->a_list[i].vertex=i;

g->a_list[i].firstarc=NULL;

}

for(k=0;k<e;k++)

{

cin>>i>>j; //i,j分别表示结点数组编号和结点的编号

p=(arcnode*)malloc(sizeof(arcnode));

p->adjvex=j;

p->nextarc=g->a_list[i].firstarc;

g->a_list[i].firstarc=p;

}

}

void dis(graph *g)

{

int i;

arcnode *p;

int have=0;

for(i=0;i<g->vexnum;i++)

{

p=g->a_list[i].firstarc;

have=0;

while(p!=NULL)

{

cout<<"("<<i<<","<<p->adjvex<<")";

p=p->nextarc;

have=1;

}

if(have) cout<<endl;

}

}

void dfs(graph g,int v,int visit[])

{

arcnode *p;

cout<<v<<" ";

visit[v]=1;

p=g.a_list[v].firstarc;

while(p!=NULL)

{

if(visit[p->adjvex]==0)

dfs(g,p->adjvex,visit);

p=p->nextarc;

}

}

int main()

{

graph g;

int next[20];

create(&g);

dis(&g);

cout<<endl;

dfs(g,0,next);

return 0;

}

*/

#include<iostream>

#include<malloc.h>

#define Vnum 20

using namespace std;

typedef struct arcnode

{

int adjvex;

arcnode *nextarc;

}arcnode;

typedef struct //vexnode

{

int vertex;

arcnode *firstarc;

}adjlist[Vnum];

typedef struct graphs

{

adjlist a_list;

int arcnum,vexnum;

}graph;

void create(graph *g)

{

int n,e,i,k,j;

arcnode *p;

cout<<"请输入顶点数和边数:"<<endl;

cin>>n>>e;

g->vexnum=n;

g->arcnum=e;

for(i=0;i<g->arcnum;i++)

{

g->a_list[i].vertex=i;

g->a_list[i].firstarc=NULL;

}

for(k=0;k<g->arcnum;k++)

{

cin>>i>>j;

p=(arcnode *)malloc(sizeof(arcnode));

p->adjvex=j;

cout<<j<<" ";//

p->nextarc=g->a_list[i].firstarc;

g->a_list[i].firstarc=p;

}

}

/*

void dfs(graph g,int v,int visit[])

{

cout<<v<<" ";

}*/

void dis(graph *g)

{

arcnode *p;

int have=0;

// int k=0;

// i=0;

// j=g->arcnum;

// while(k<g->arcnum)

for(int i=0;i<g->arcnum;i++)

{

p=g->a_list[i].firstarc;

have=0;

while(p!=NULL)

{

cout<<"("<<i<<","<<p->adjvex<<")";

have=1;

p=p->nextarc;

}

if(have) cout<<endl;

// k++;

}

}

int main()

{

graph g;

create(&g);

dis(&g);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐