欢迎来到天天文库
浏览记录
ID:14884190
大小:73.00 KB
页数:6页
时间:2018-07-30
《邻接表存储,广度优先遍历》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#defineOK1#defineERROR-1#defineFALSE0#defineTRUE1typedefintstatus;//--------存储类别,邻接表----------------#defineMAX_VERTEX_NUM20typedefstructArcNode{intadjvex;structArcNode*nextarc;}ArcNode;typedefstructVNode{intdata;ArcNode*firstarc;}VNode,AdjLis
2、t[MAX_VERTEX_NUM];typedefstruct{AdjListvertices;intvexnum,arcnum;}ALGraph;//----------------队列定义-----------typedefintstatus;typedefstructQnode{intdata;structQnode*next;}Qnode,*queueptr;typedefstruct{queueptrfront;queueptrrear;}linkqueue;////-------------初始化队列----------statusin
3、itqueue(linkqueue&Q){Q.front=Q.rear=(queueptr)malloc(sizeof(Qnode));if(!Q.front)exit(0);Q.front->next=NULL;returnOK;}//---------------插入---------------voidEnQueue(linkqueue&Q,inte){Qnode*p;p=(queueptr)malloc(sizeof(Qnode));if(!p)exit(0);p->data=e;p->next=NULL;Q.rear->next=p;Q.
4、rear=p;//returnOK;}//------------判定是否为空--------statusQueueEmpty(linkqueueQ){if(Q.front==Q.rear)returnOK;elsereturn!OK;}//--------------删除--------------statusDeQueue(linkqueue&Q,int&u){if(Q.front==Q.rear)returnERROR;queueptrp;p=Q.front->next;u=p->data;Q.front->next=p->next;if(Q
5、.rear==p)Q.rear=Q.front;free(p);returnOK;}//------------定位,返回下标--------statusLocateVex(ALGraphG,intvex){for(inti=0;i6、xnum,&G.arcnum);printf("输入顶点");for(inti=0;i7、ex(G,v2);p_1=(ArcNode*)malloc(sizeof(ArcNode));p_1->adjvex=temp_2;p_1->nextarc=G.vertices[temp_1].firstarc;G.vertices[temp_1].firstarc=p_1;p_2=(ArcNode*)malloc(sizeof(ArcNode));p_2->adjvex=temp_1;p_2->nextarc=G.vertices[temp_2].firstarc;G.vertices[temp_2].firstarc=p_2;}returnO8、K;}//------------广度优先遍历------------statusvisit(intv){printf("
6、xnum,&G.arcnum);printf("输入顶点");for(inti=0;i7、ex(G,v2);p_1=(ArcNode*)malloc(sizeof(ArcNode));p_1->adjvex=temp_2;p_1->nextarc=G.vertices[temp_1].firstarc;G.vertices[temp_1].firstarc=p_1;p_2=(ArcNode*)malloc(sizeof(ArcNode));p_2->adjvex=temp_1;p_2->nextarc=G.vertices[temp_2].firstarc;G.vertices[temp_2].firstarc=p_2;}returnO8、K;}//------------广度优先遍历------------statusvisit(intv){printf("
7、ex(G,v2);p_1=(ArcNode*)malloc(sizeof(ArcNode));p_1->adjvex=temp_2;p_1->nextarc=G.vertices[temp_1].firstarc;G.vertices[temp_1].firstarc=p_1;p_2=(ArcNode*)malloc(sizeof(ArcNode));p_2->adjvex=temp_1;p_2->nextarc=G.vertices[temp_2].firstarc;G.vertices[temp_2].firstarc=p_2;}returnO
8、K;}//------------广度优先遍历------------statusvisit(intv){printf("
此文档下载收益归作者所有