如何构建邻接矩阵并实现长尾词的深度优先搜索算法?

2026-04-12 01:011阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计497个文字,预计阅读时间需要2分钟。

如何构建邻接矩阵并实现长尾词的深度优先搜索算法?

伪原创开头内容,避免雷同,不超过100字,直接输出结果:'新时代,创新驱动发展,科技引领未来。'

如何构建邻接矩阵并实现长尾词的深度优先搜索算法?

#include<stdio.h> #include<stdlib.h> #include<string.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; #define MAX_VERTEX_NUM 20 typedef enum{DG,DN,UDG,UDN}GraphKind; typedef int VRType; typedef char InfoType; typedef char VertexType [10]; typedef struct ArcCell { VRType adj; InfoType *info; }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { VertexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; int vexnum,arcnum; GraphKind Kind; }MGraph; int visited[MAX_VERTEX_NUM]; Status (*VisitFunc)(MGraph G,int v); int LocateVex(MGraph G,VertexType v) { int i; for(i=0;i<G.arcnum;i++) if(!strcmp(G.vexs[i],v)) return i; return -1; } Status CreateUDN(MGraph *G) { int i,j,k; char v1[20],v2[20]; printf("请输入顶点和弧的个数:"); scanf("%d%d",&G->vexnum,&G->arcnum); for(i=0;i<G->vexnum;i++) scanf("%s",G->vexs[i]); for(i=0;i<G->vexnum;i++) for(j=0;j<G->vexnum;j++) { G->arcs[i][j].adj=0; G->arcs[i][j].info=NULL; } printf("\n请输入边依附的顶点:\n"); for(k=0;k<G->arcnum;k++) { scanf("%s%s",&v1,&v2); i=LocateVex(*G,v1); j=LocateVex(*G,v2); G->arcs[i][j].adj=G->arcs[j][i].adj=1; } } int FirstAdjVex(MGraph G,int v) { int i; for(i=0;i<G.vexnum;i++) if(G.arcs[v][i].adj) return i; return -1; } int NextAdjVex(MGraph G,int v,int w) { int k; if(!G.arcs[v][w].adj) return -1; for(k=w+1;k<G.vexnum;k++) if(G.arcs[v][k].adj) return k; } void DFS(MGraph G,int v) { int w; visited[v]=TRUE; (*VisitFunc)(G,v); for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w)) if(!visited[w]) DFS(G,w); } void DFSTraverse(MGraph G,Status (*Visit)(MGraph G,int v)) { VisitFunc=Visit; int i; for(i=0;i<G.vexnum;i++) visited[i]=FALSE; for(i=0;i<G.vexnum;i++) if(!visited[i]) DFS(G,i); } Status func(MGraph G,int v) { printf("%s",G.vexs[v]); } int main() { MGraph G; int i,j; CreateUDN(&G); printf("建立的邻接矩阵为:\n"); for(i=0;i<G.vexnum;i++) { for(j=0;j<G.vexnum;j++) printf("%3d",G.arcs[i][j].adj); printf("\n"); } printf("深度优先搜索结果为:\n"); DFSTraverse(G,func); printf("\n"); }

本文共计497个文字,预计阅读时间需要2分钟。

如何构建邻接矩阵并实现长尾词的深度优先搜索算法?

伪原创开头内容,避免雷同,不超过100字,直接输出结果:'新时代,创新驱动发展,科技引领未来。'

如何构建邻接矩阵并实现长尾词的深度优先搜索算法?

#include<stdio.h> #include<stdlib.h> #include<string.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; #define MAX_VERTEX_NUM 20 typedef enum{DG,DN,UDG,UDN}GraphKind; typedef int VRType; typedef char InfoType; typedef char VertexType [10]; typedef struct ArcCell { VRType adj; InfoType *info; }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { VertexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; int vexnum,arcnum; GraphKind Kind; }MGraph; int visited[MAX_VERTEX_NUM]; Status (*VisitFunc)(MGraph G,int v); int LocateVex(MGraph G,VertexType v) { int i; for(i=0;i<G.arcnum;i++) if(!strcmp(G.vexs[i],v)) return i; return -1; } Status CreateUDN(MGraph *G) { int i,j,k; char v1[20],v2[20]; printf("请输入顶点和弧的个数:"); scanf("%d%d",&G->vexnum,&G->arcnum); for(i=0;i<G->vexnum;i++) scanf("%s",G->vexs[i]); for(i=0;i<G->vexnum;i++) for(j=0;j<G->vexnum;j++) { G->arcs[i][j].adj=0; G->arcs[i][j].info=NULL; } printf("\n请输入边依附的顶点:\n"); for(k=0;k<G->arcnum;k++) { scanf("%s%s",&v1,&v2); i=LocateVex(*G,v1); j=LocateVex(*G,v2); G->arcs[i][j].adj=G->arcs[j][i].adj=1; } } int FirstAdjVex(MGraph G,int v) { int i; for(i=0;i<G.vexnum;i++) if(G.arcs[v][i].adj) return i; return -1; } int NextAdjVex(MGraph G,int v,int w) { int k; if(!G.arcs[v][w].adj) return -1; for(k=w+1;k<G.vexnum;k++) if(G.arcs[v][k].adj) return k; } void DFS(MGraph G,int v) { int w; visited[v]=TRUE; (*VisitFunc)(G,v); for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w)) if(!visited[w]) DFS(G,w); } void DFSTraverse(MGraph G,Status (*Visit)(MGraph G,int v)) { VisitFunc=Visit; int i; for(i=0;i<G.vexnum;i++) visited[i]=FALSE; for(i=0;i<G.vexnum;i++) if(!visited[i]) DFS(G,i); } Status func(MGraph G,int v) { printf("%s",G.vexs[v]); } int main() { MGraph G; int i,j; CreateUDN(&G); printf("建立的邻接矩阵为:\n"); for(i=0;i<G.vexnum;i++) { for(j=0;j<G.vexnum;j++) printf("%3d",G.arcs[i][j].adj); printf("\n"); } printf("深度优先搜索结果为:\n"); DFSTraverse(G,func); printf("\n"); }