- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)