栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

<实验五>

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

<实验五>


#include
#include
#include
#include
#define Max_Vertex_Num 100 
typedef struct
{
    char vex;
    char start;
    char endx;
} Node;
typedef struct ArcNode
{
    int adjvex;
    struct ArcNode *nextarc;
    int weight;
} ArcNode;
typedef struct VNode
{
    char vertex;
    ArcNode *firstarc;
} VNode;

typedef VNode AdjList[Max_Vertex_Num];
typedef struct
{
    AdjList adjlist;
    int vexnum,arcnum;
} ALGraph;
typedef struct
{
    char vexs[Max_Vertex_Num];
    int arcs[Max_Vertex_Num][Max_Vertex_Num];
    int vexnum,arcnum;
} Mgraph;
int LocateVex1(Mgraph *G,char u)
{
    int i;
    for(i=0; ivexnum; i++)
    {
        if(G->vexs[i]==u)
            return i;
    }
    return -1;
}
void CreateMGraph(Mgraph *G,int n,int m,Node *q)
{
    int i,j,k;
    G->vexnum=n;
    G->arcnum=m;
    for(i=0; ivexnum; i++)
    {
        G->vexs[i]=q[i].vex;
    }
    for(i=0; ivexnum; i++)
    {
        for(j=0; jvexnum; j++)
        {
            G->arcs[i][j]=0;
        }
    }
    for(k=0; karcnum; k++)
    {
        char v1=q[k].start;
        char v2=q[k].endx;
        i=LocateVex1(G,v1);
        j=LocateVex1(G,v2);
        if((i==-1)||(j==-1))
            printf("该条边不存在n");
        else
        {
            G->arcs[i][j]=1;
            G->arcs[j][i]=1;
        }
    }
}
void DispMatrix(Mgraph G)
{
    int i,j;
    printf("  ");
    for(i=0;ivexnum; i++)
    {
        if(G->adjlist[i].vertex==u)
            return i;
    }
    return -1;
}
void CreateALGraph(ALGraph *G,int n,int m,Node *q)
{
    ArcNode *p1,*p2;
    int i,j,k;
    G->vexnum=n;
    G->arcnum=m;
    for(k=0; kvexnum; k++)
    {
        G->adjlist[k].vertex=q[k].vex;
        G->adjlist[k].firstarc=NULL;
    }
    k=0;
    while(karcnum)
    {
        char v1=q[k].start;
        char v2=q[k].endx;
        i=LocateVex2(G,v1);
        j=LocateVex2(G,v2);
        if((i==-1)||(j==-1))
            printf("该边不存在!n");
        else
        {
            k++;
            p1=(ArcNode *)malloc(sizeof(ArcNode));
            p1->adjvex=j;
            p1->nextarc=G->adjlist[i].firstarc;
            G->adjlist[i].firstarc=p1;
            p2=(ArcNode *)malloc(sizeof(ArcNode));
            p2->adjvex=i;
            p2->nextarc=G->adjlist[j].firstarc;
            G->adjlist[j].firstarc=p2;
        }
    }
}
void DispAdjList(ALGraph G)
{
    ArcNode *p;
    int i;
    for(i=0; inextarc)
            printf("->%c",p->adjvex+'A');
        printf("n");
    }
}
void changeAdjlist(Mgraph g,ALGraph *G)
{
    int i,j;
    ArcNode *p;
    for (i=0; iadjlist[i].vertex=g.vexs[i];
        G->adjlist[i].firstarc=NULL;
    }
    for (i=0; i=0; j--)
            if (g.arcs[i][j]!=0)  
            {
                p=(ArcNode *)malloc(sizeof(ArcNode));   
                p->adjvex=j;
                p->nextarc=G->adjlist[i].firstarc;       
                G->adjlist[i].firstarc=p;
            }
    G->vexnum=g.vexnum;
    G->arcnum=g.arcnum;
}
void changeMGraph(Mgraph *G,ALGraph g)
{
    int i;
    ArcNode *p;
    for(i=0;ivexs[i]=g.adjlist[i].vertex;
    for(i=0;iarcs[i][p->adjvex]=1;
            p=p->nextarc;
        }
    }
    G->vexnum=g.vexnum;
    G->arcnum=g.arcnum;
}
void BfsALGraph(ALGraph G,int n,int v)
{
    ArcNode *p;
    int i,j;
    int Q[n+1],r,f;
    int visited[n];
    for(i=0;iadjvex]==0)
            {
                printf(" %c",p->adjvex+'A');
                visited[p->adjvex]=1;
                r=(r+1)%(n+1);
                Q[r]=p->adjvex;
            }
            p=p->nextarc;
        }
    }

}
void Dfs(Mgraph G,int i,int visited[],int *t)
{
    int j;
    visited[i]=1;
    if(t+1==G.vexnum)
    {
        printf("%c ",G.vexs[i]);
    }
    else
    {
        printf("%c ",G.vexs[i]);
        t++;
    }
    for(j=0;j 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号