• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 图的邻接表存储表示示例讲解

图的邻接表存储表示示例讲解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了有向图的邻接表,无向图的邻接表,图的邻接表,图的邻接表存储结构,图的邻接表表示法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

#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("请输入顶点数和边数:");
    scanf_s("%d,%d",&G->vexNum, &G->arcNum);

    //建立顶点表
    printf_s("建立顶点表\n");
    for (i = 0; i < G->vexNum; i++)
    {
        printf_s("请输入第%d个顶点:", i);
        fflush(stdin);//刷新缓冲区
        G->verTices[i].data = getchar();
        G->verTices[i].firstArc = NULL;
    }

    //建立边表
    printf_s("建立边表\n");
    for (k = 0; k < G->arcNum; k++)
    {
        printf_s("请输入(vi-vj)的顶点对序号");
        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");
    }
}
</div>

</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 图的邻接表存储表示示例讲解

相关文章

  • 2017-05-28c语言:金币阵列的问题
  • 2017-05-28c++中的消息框messagebox()详细介绍及使用方法
  • 2017-05-28VC程序在Win32环境下动态链接库(DLL)编程原理
  • 2017-05-28C语言实现BMP转换JPG的方法
  • 2017-05-28C语言 结构体和指针详解及简单示例
  • 2017-05-28C++中队列的建立与操作详细解析
  • 2017-05-28vc++实现的tcp socket客户端和服务端示例
  • 2017-05-28C++类成员构造函数和析构函数顺序示例详细讲解
  • 2017-05-28简单掌握C++编程中的while与do-while循环语句使用
  • 2017-05-28C++中的friend友元函数详细解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言数据结构二叉树简单应用
    • C语言中形参和实参详解及实例代码
    • C++实现图形界面时钟表盘代码
    • c语言实现把文件中数据读取并存到数组中
    • C++ Vector用法深入剖析
    • C语言堆栈入门指南
    • 获取本地网卡适配器信息具体代码
    • C++利用stringstream进行数据类型转换实例
    • c语言字符数组与字符串的使用详解
    • 浅谈C++对象的内存分布和虚函数表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有