图的邻接矩阵、邻接表和遍历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.图的邻接矩阵和遍历
#include
const int n=8;
const int e=15;
#define elemtype int
bool visited[n+1];
class graph
{
public:
elemtype v[n+1];
int arcs[n+1][n+1];
void creatadj()
{
int i,j,k;
cout<<"请输入"< for (k=1;k<=n;k++) cin>>v[k]; for(i=1;i<=n; i++) for(j=1;j<=n;j++) arcs[i][j]=0; for(k=1;k<=e;k++) { cout<<"请输入第"< cin>>i>>j; cout< arcs[i][j]=1; arcs[j][i]=1; } } void dfs(int i) { int j; cout< visited[i]=true; for(j=1;j<=n;j++) if((arcs[i][j]==1)&&(!visited[j])) dfs(j); } void bfs(int i) { int q[n+1]; int f,r,j; f=r=0; cout< visited[i]=true; r++;q[r]=i; while(f { f++;i=q[f]; for(j=1;j<=n;j++) if((arcs[i][j]==1)&&(!visited[j])) { cout< visited[j]=true; r++;q[r]=j; } } } }; void main() { int i,j;graph g; int yn=1; g.creatadj(); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) cout< cout< } while(yn==1) { for(i=1;i<=n;i++) visited[i]=false; cout<<"请输入深度优先搜索开始访问的顶点"; cin>>i; cout< cout<<"从"< g.dfs(i); cout< cin>>yn; } yn=1; while(yn==1) { for(i=1;i<=n;i++) visited[i]=false; cout<<"请输入广度优先搜索开始访问的顶点"; cin>>i; cout< cout<<"从"< g.bfs(i); cout< cin>>yn; } } 二.图的邻接表和遍历 #include const int n=8; const int e=15; typedef int elemtype; bool visited[n+1]; class link { public: elemtype data; link *next; }; class GRAPH { public: link a[n+1]; void creatlink() { int i,j,k; link *s; for(i=1;i<=n;i++) { a[i].data=i; a[i].next=NULL; } for(k=1;k<=e;k++) { cout<<"请输入一条边"; cin>>i>>j; s=new link; s->data=j; s->next=a[i].next; a[i].next=s; s=new link; s->data=i; s->next=a[j].next; a[j].next=s; } } void dfsl(int i) { link *p; cout< visited[i]=true; p=a[i].next; while(p!=NULL) { if (!visited[p->data]) dfsl(p->data); p=p->next; } } void bfsl(int i) { int q[n+1]; int f,r; link *p; f=r=0; cout< visited[i]=true; r++;q[r]=i; while(f { f++;i=q[f]; p=a[i].next; while(p!=NULL) { if (!visited[p->data]) { cout<data].data<<""; visited[p->data]=true; r++;q[r]=p->data;