C语言有关图的课程设计.docx
- 文档编号:9757876
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:15
- 大小:16.08KB
C语言有关图的课程设计.docx
《C语言有关图的课程设计.docx》由会员分享,可在线阅读,更多相关《C语言有关图的课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
C语言有关图的课程设计
#include
usingnamespacestd;
constintMaxSize=20;//×î¶à¼¸¸ö½Úµã
inti,j,k;
structArcNode//±ß±í½Úµã
{
intadjivex;
ArcNode*next;
};
structVertexNode//¶¥µã±í½Úµã
{
intdate;
ArcNode*firstedge;
ArcNode*nfirstedge;
};
structArcNode*s;//±ß±í½Úµã¹¤×÷Ö¸Õë
classGraph
{
public:
Graph(inta[],intn,inte);
~Graph();
voidPrintGraph();
voidInsertArc(inta,intb);
voidInsertVertex(intdate);
boolDeleteArc(inta,intb);
voidDeleteVertex();
boolIsconect();
voidScprint();
voidDFS(intv,inta[]);
voidDFS1(intv,inta[],intb[]);
voidNDFS(inti,intvisited[],intb[]);
voidscPrint(intb[]);
voidBFS(intv,intvisisted[]);
voidBFS();
private:
VertexNodeadjlist[MaxSize];
intvertexNum,arcNum;
};
//////////////////////////////////////////////////////////////////////////
Graph:
:
Graph(inta[],intn,inte)
{
vertexNum=n;arcNum=e;
for(i=0;i { adjlist[i].date=a[i]; adjlist[i].firstedge=NULL; adjlist[i].nfirstedge=NULL; } for(k=0;k { cin>>i>>j; s=newArcNode;s->adjivex=j; s->next=adjlist[i].firstedge; adjlist[i].firstedge=s; s=newArcNode;s->adjivex=i; s->next=adjlist[j].nfirstedge; adjlist[j].nfirstedge=s; } } Graph: : ~Graph() { for(i=0;i { while(adjlist[i].firstedge! =NULL) { s=adjlist[i].firstedge; adjlist[i].firstedge=(adjlist[i].firstedge)->next; deletes; } while(adjlist[i].nfirstedge! =NULL) { s=adjlist[i].nfirstedge; adjlist[i].nfirstedge=(adjlist[i].nfirstedge)->next; deletes; } } } voidGraph: : BFS(intv,intvisisted[])//¹ã¶ÈÓÅÏȱéÀú { intQ[MaxSize],front,rear; front=rear=-1; structArcNode*p; cout< visisted[v]=1; Q[++rear]=v; while(front! =rear) { v=Q[++front]; p=adjlist[v].firstedge; while(p! =NULL) { intw=p->adjivex; if(visisted[w]==0) { cout< visisted[w]=1; Q[++rear]=j; } p=p->next; } } } voidGraph: : BFS() { intn=vertexNum; int*visited=newint[n]; for(intw=0;w { visited[w]=0; } for(intw=0;w { if(visited[w]==0) { BFS(w,visited); } } delete[]visited; } voidGraph: : InsertArc(inta,intb) { arcNum++; s=newArcNode;s->adjivex=b; s->next=adjlist[a].firstedge; adjlist[a].firstedge=s; s=newArcNode;s->adjivex=a; s->next=adjlist[b].nfirstedge; adjlist[b].nfirstedge=s; } voidGraph: : InsertVertex(intdata) {cout< adjlist[vertexNum].date=data; adjlist[vertexNum].firstedge=NULL; adjlist[vertexNum].nfirstedge=NULL; vertexNum++; } boolGraph: : DeleteArc(inta,intb) { s=adjlist[a].firstedge; if(s->adjivex==b) { adjlist[a].firstedge=s->next; deletes; arcNum--; } else { while(s->next! =NULL) { if(s->next->adjivex==b) { s->next=s->next->next; deletes->next; arcNum--; } s=s->next; } } s=adjlist[b].nfirstedge; if(s->adjivex==a) { adjlist[b].nfirstedge=s->next; deletes; returntrue; } else { while(s->next! =NULL) { if(s->next->adjivex==b) { s->next=s->next->next; deletes->next; returntrue; } s=s->next; } } returnfalse; } voidGraph: : DeleteVertex() { for(intw=0;w DeleteArc(w,vertexNum-1); while(adjlist[vertexNum-1].firstedge! =NULL) { s=adjlist[vertexNum-1].firstedge; adjlist[vertexNum-1].firstedge=(adjlist[vertexNum-1].firstedge)->next; deletes; arcNum--; } while(adjlist[vertexNum-1].nfirstedge! =NULL) { s=adjlist[vertexNum-1].nfirstedge; adjlist[vertexNum-1].nfirstedge=(adjlist[vertexNum-1].nfirstedge)->next; deletes; } vertexNum--; } voidGraph: : PrintGraph() { cout<<"\t"< for(i=0;i { cout< } cout< for(i=0;i { s=adjlist[i].firstedge; while(s! =NULL) { cout<"< s=s->next; } } } boolGraph: : Isconect() { intn=vertexNum; int*visited=newint[n]; for(i=0;i { visited[i]=0; } for(i=0,j=0;i { if(visited[i]==0) { DFS(i,visited); j++; } } delete[]visited; if(j>1) { cout<<"²»ÊÇÁ¬Í¨Í¼"< returntrue; } else { cout<<"ÊÇÁ¬Í¨Í¼"< returnfalse; } } voidGraph: : DFS(intv,intvisited[]) { structArcNode*p; cout< visited[v]=1; p=adjlist[v].firstedge; while(p! =NULL) { k=p->adjivex; if(visited[k]==0)DFS(k,visited); p=p->next; } p=adjlist[v].nfirstedge; while(p! =NULL) { k=p->adjivex; if(visited[k]==0)DFS(k,visited); p=p->next; } } voidGraph: : DFS1(intv,intvisited[],inta[]) { structArcNode*p; visited[v]=1; p=adjlist[v].firstedge; while(p! =NULL) { k=p->adjivex; if(visited[k]==0)DFS1(k,visited,a); p=p->next; } a[j++]=v; } voidGraph: : NDFS(intv,intvisited[],intb[]) { structArcNode*p; visited[v]=1; p=adjlist[v].nfirstedge; while(p! =NULL) { k=p->adjivex; if(visited[k]==0)NDFS(k,visited,b); p=p->next; } b[j++]=v;//cout< } voidGraph: : scPrint(intb[]) { cout<<"½ÚµãºÅ£º"; for(i=0;i { cout< } cout< cout<<"±ß£º"< for(i=0;i { s=adjlist[b[i]].firstedge; while(s! =NULL) { for(intt=0;t { if(s->adjivex==b[t]) {cout<"< } s=s->next; } } cout< } voidGraph: : Scprint() { intn=vertexNum; int*a=newint[n]; int*visited=newint[n]; int*b=newint[n]; cout<<"Ç¿Á¬Í¨Í¼·ÖÁ¿£º"< for(i=0;i { b[i]=-1; a[i]=-1; visited[i]=0; } for(i=0,j=0;i { if(visited[i]==0) { DFS1(i,visited,a); } } for(i=0;i {visited[i]=0;} for(intw=n-1;w>=0;w--) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 有关 课程设计