雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

圖的鄰接表存儲(chǔ)表示示例講解

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

復(fù)制代碼 代碼如下:

//---------圖的鄰接表存儲(chǔ)表示-------

#include<stdio.h>
#include<stdlib.h>

#define MAX_VERTEXT_NUM 20

typedef int InfoType;
typedef char VertextType;

typedef struct ArcNode
{
    int adjvex;
    struct ArcNode *nextArc;
    InfoType *info;
}ArcNode;

typedef struct VNode
{
    VertextType data;
    ArcNode *firstArc;
}VNode, AdjList[MAX_VERTEXT_NUM];

typedef struct
{
    AdjList verTices;
    int vexNum;
    int arcNum;
    int kind;
}ALGraph;

void CreateGraph(ALGraph *G);
void DisplayGraph(ALGraph *G);

int main()
{
    ALGraph *Graph = (ALGraph *)malloc(sizeof(ALGraph));
    CreateGraph(Graph);
    DisplayGraph(Graph);

    system("pause");
}

void CreateGraph(ALGraph *G)
{
    int i,j,k;
    ArcNode *arcNode;
    printf_s("請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):");
    scanf_s("%d,%d",&G->vexNum, &G->arcNum);

    //建立頂點(diǎn)表
    printf_s("建立頂點(diǎn)表\n");
    for (i = 0; i < G->vexNum; i++)
    {
        printf_s("請(qǐng)輸入第%d個(gè)頂點(diǎn):", i);
        fflush(stdin);//刷新緩沖區(qū)
        G->verTices[i].data = getchar();
        G->verTices[i].firstArc = NULL;
    }

    //建立邊表
    printf_s("建立邊表\n");
    for (k = 0; k < G->arcNum; k++)
    {
        printf_s("請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)");
        scanf_s("%d,%d", &i, &j);
        arcNode = (ArcNode *)malloc(sizeof(ArcNode));
        arcNode->adjvex = j;
        arcNode->nextArc = G->verTices[i].firstArc;//插入表頭
        G->verTices[i].firstArc = arcNode;

        arcNode = (ArcNode *)malloc(sizeof(ArcNode));
        arcNode->adjvex = i;
        arcNode->nextArc = G->verTices[j].firstArc;//插入表頭
        G->verTices[j].firstArc = arcNode;
    }
}

void DisplayGraph(ALGraph *G)
{
    int i;
    for (i = 0; i < G->vexNum; i++)
    {
        printf_s("%d->", i);
        while (G->verTices[i].firstArc != NULL)
        {
            printf_s("%d->", G->verTices[i].firstArc->adjvex);
            G->verTices[i].firstArc = G->verTices[i].firstArc->nextArc;
        }
        printf_s("\n");
    }
}



復(fù)制代碼 代碼如下:

請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):6,7
建立頂點(diǎn)表
請(qǐng)輸入第0個(gè)頂點(diǎn):0
請(qǐng)輸入第1個(gè)頂點(diǎn):1
請(qǐng)輸入第2個(gè)頂點(diǎn):2
請(qǐng)輸入第3個(gè)頂點(diǎn):3
請(qǐng)輸入第4個(gè)頂點(diǎn):4
請(qǐng)輸入第5個(gè)頂點(diǎn):5
建立邊表
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)0,1
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)0,4
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)1,4
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)1,5
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)2,3
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)2,5
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)3,5
0->4->1->
1->5->4->0->
2->5->3->
3->5->2->
4->1->0->
5->3->2->1->
請(qǐng)按任意鍵繼續(xù). . .

上一篇:c語(yǔ)言計(jì)算三角形面積代碼

欄    目:C語(yǔ)言

下一篇:C++非遞歸遍歷磁盤文件和遞歸遍歷磁盤文件的程序示例

本文標(biāo)題:圖的鄰接表存儲(chǔ)表示示例講解

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3902.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有