网站大量收购闲置独家精品文档,联系QQ:2885784924

利用邻接表存储无向图,并深度遍历与广度遍历图.doc

利用邻接表存储无向图,并深度遍历与广度遍历图.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用邻接表存储无向图,并深度遍历和广度遍历图 #include stdio.h #include iostream.h #include malloc.h #define max 20 int visited[max]; int w; typedef struct arcnode { ?int adjvex;//该弧指向的顶点的位置 ?struct arcnode *nextarc;//弧尾相同的下一条弧 ?char *info;//该弧信息 }arcnode; typedef struct vnode { ?char data;//结点信息 ?arcnode *firstarc;//指想第一条依附该结点的弧的指针 }vnode,adjlist; typedef struct { ?adjlist vertices[max]; ?int vexnum,arcnum; ?int kind; }algraph; typedef struct qnode { ?int data; ?struct qnode *next; }qnode,*queueptr; typedef struct { ?queueptr front; ?queueptr rear; }linkqueue; void dfs(algraph gra,int i); int creatadj(algraph gra)//用邻接表存储图 { ?int i,n,m; ?char cha; ?cout输如结点个数:; ?cinn; ?cout输如弧个数:; ?cinm;?arcnode *arc,*tem; ?for(i=0;in;i++) ?{ ??cout输如结点信息:; ??cingra.vertices[i].data; ??gra.vertices[i].firstarc=NULL; ?} ?for(i=0;in;i++) ?{ ???cout结点i是否有出度:; ???cincha; ???if(cha==y) ????{? ????arc=(arcnode *)malloc(sizeof(arcnode)); ????cinarc-adjvex;???? ????gra.vertices[i].firstarc=arc; ????cout是否还有出度:; ????cincha; ????while(cha==y) ????{ ????tem=(arcnode *)malloc(sizeof(arcnode)); ????cintem-adjvex;???? ????arc-nextarc=tem; ????arc=tem; ????cout是否还有出度:; ????cincha; ????} ????arc-nextarc=NULL; ????} ???if(cha==n) ????continue; ?} ?gra.vexnum=n; ?gra.arcnum=m; ?return 1; } int firstadjvex(algraph gra,vnode v)//返回依附顶点V的第一个点 ?????????//即以V为尾的第一个结点 { ?return v.firstarc-adjvex; } int nextadjvex(algraph gra,vnode v,int w)//返回依附顶点V的相对于W的下一个顶点 { ?arcnode *p; ?p=v.firstarc; ?while(p!=NULL) ?{ ??if(p-adjvex!=w) ???p=p-nextarc; ??if(p-adjvex==wp-nextarc!=NULL) ???return p-nextarc-adjvex; ??else return 0; ?} } int initqueue(linkqueue q)//初始化队列 { ?q.rear=(queueptr)malloc(sizeof(qnode)); ?q.front=q.rear; ?if(!q.front) ??return 0; ?q.front-next=NULL; ?return 1; } int enqueue(linkqueue q,int e)//入队 { ?queueptr p; ?p=(queueptr)malloc(sizeof(qnode)); ?if(!p) ??return 0; ?p-data=e; ?p-next=NULL; ?q.rear-next=p; ?q.rear=p; ?return 1; } int dequeue(linkqueue q,int e)//出队 { ?queueptr p; ?if(q.front==q.rear) ??return 0; ?p=q.

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档