데이터 구조 - 그림 의 인접 행렬 표현 법

2780 단어 데이터 구조
#include 
using namespace std;
        
#define MAX_VERTEX_NUM    10        //      
typedef char VERTYPE;
typedef struct
{
    VERTYPE    vexs[MAX_VERTEX_NUM];    //    
    int        arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];                    //    
    int        vexnum,arcnum;            //          
}mgraph, * MGraph;

void init_mgraph(MGraph &g)    //    
{
    g=(MGraph)malloc(sizeof(mgraph));
    g->vexnum=0;
    g->arcnum=0;
    for(int i=0;ivexs[i]=0;
    for(i=0;iarcs[i][j]=0;
}

void add_vexs(MGraph &g)    //    
{
    cout<>g->vexnum;
    cout<vexnum;i++)
    {
        cin>>g->vexs[i];
    }
}
void add_arcs(MGraph &g)    //   
{
    cout<>g->arcnum;
    VERTYPE ch1,ch2;
    int row,col;

    for(int i=0;iarcnum;i++)
    {    
        cin>>ch1>>ch2;
        for(int j=0;jvexnum;j++)
        {
            if(g->vexs[j]==ch1)
            {
                row=j;
            }
            if(g->vexs[j]==ch2)
            {
                col=j;
            }
        }
        g->arcs[row][col]=1;    //        1  weight
        g->arcs[col][row]=1;    //       
    }
}

void creat_mgraph(MGraph &g) //       
{
    add_vexs(g);    //    
    add_arcs(g);    //   
}

void print_mgraph(MGraph &g) //   
{
    for(int i=0;ivexnum;i++)
        cout<vexs[i];
    cout<vexnum;i++)
    {
        cout<vexs[i]<vexnum;j++)
        {
            cout<arcs[i][j]<vexnum;i++)
    {
        if(g->vexs[i]==ch)
        {
            row=i;
        }
    }

    int arcs=0;    //         ,         
    for(i=0;ivexnum;i++)
    {
        if(g->arcs[row][i] == 1)
            arcs++;
    }
    for(i=0;ivexnum;i++)
    {
        for(j=row;jvexnum-1;j++)
            g->arcs[i][j]=g->arcs[i][j+1];    //            
        g->arcs[i][j+1]=0;
    }
    for(i=row;ivexnum-1;i++)
    {
        for(j=0;jvexnum;j++)
            g->arcs[i][j]=g->arcs[i+1][j];    //            
        g->arcs[i+1][j]=0;
    }
    for(i=row;ivexnum-1;i++)    //             
        g->vexs[i]=g->vexs[i+1];

    g->vexnum=g->vexnum-1;        //     1
    g->arcnum=g->arcnum-arcs;    //             
}

int main()
{
    MGraph G;
    init_mgraph(G);        //    
    creat_mgraph(G);    //   
    print_mgraph(G);    //   

    //    
    VERTYPE ch;
    cin>>ch;
    delete_vex(G,ch);
    cout<arcnum<vexnum<

좋은 웹페이지 즐겨찾기