有向图的创建(用c++编译运行)

本文介绍了如何使用C语言定义邻接矩阵图结构,包括创建一个只有顶点的图、插入边以及打印出完整的邻接矩阵。程序通过用户输入顶点数、数据和边的信息来构建和操作图。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxVertexNum 100   //最大顶点数
#define INFINITY 65535     //假设无穷大为这个数
typedef int Vertex;        //假设顶点为int类型
typedef int WeightType;      // 假设权值为int类型
typedef char DataType;       // 假设顶点存储的数据类型设为字符型  

//邻接矩阵图定义
typedef struct GNode *PtrToGNode;
struct GNode{
int Nv;                    // 顶点数
int Ne;                     // 边数
WeightType G[MaxVertexNum][MaxVertexNum];  // 邻接矩阵	
DataType Data[MaxVertexNum];              // 存顶点数据
};
typedef PtrToGNode MGraph;              //MGraph是一个指向结构体GNode的指针

//边的定义
typedef struct ENode *PtrToENode;
struct ENode{
Vertex V1, V2;                           //  顶点
WeightType Weight;	                      //  权值
};

//初始化一个只有顶点,没有边的图
typedef PtrToENode Edge;                 //Edge是指向ENode结构体的一个指针
MGraph CreateGraph(int VertexNum){
int i,j;                              
MGraph Graph;                              
Graph=(MGraph)malloc(sizeof(struct GNode));   //分配一个图的结构空间
Graph->Nv=VertexNum;                         //顶点
Graph->Ne=0;                                   // 边
for(i=0; i<Graph->Nv; i++)                   // 2个for循环初始化邻接矩阵(二维数组),每个值为无穷大
for(j=0; j<Graph->Nv; j++)
Graph->G[i][j]=INFINITY;
return Graph;
}

//插入边
void InsertEdge(MGraph Graph, Edge E){
Graph->G[E->V1][E->V2]=E->Weight;
}

//建立邻接矩阵
MGraph BuildGraph(){
MGraph Graph;//声明一个图结构体
ENode* E;//声明一条边的结构指针   
int Nv, i;
char c1, c2;
int j;
printf("请输入顶点个数:");
scanf("%d", &Nv);
Graph=CreateGraph(Nv);// 初始化一个只有Nv个顶点,没有边的图

//读入顶点数据
getchar();
printf("\n请输入顶点数据(注意中间不能带空格,例如输入abcd表示顶点为a,b,c,d):");
for(i=0; i<Nv; i++){
scanf("%c", &(Graph->Data[i]));
}

printf("请输入边个数:");
scanf("%d", &(Graph->Ne));
if(Graph->Ne!=0){

E=(Edge)malloc(sizeof(struct ENode));// 为边创建一个三元组空间(包括V1,v2,weight)空间                                        
for(i=0; i<Graph->Ne; i++){getchar();
printf("\n请输入起点v1:");
c1=getchar();
printf("\n请输入终点v2:");
getchar();
c2=getchar();
printf("\n权值weight:");
scanf("%d",&E->Weight);
for(j=0;j<Nv; j++) if(Graph->Data[j]==c1) {E->V1=j;break;}
for(j=0;j<Nv; j++) if(Graph->Data[j]==c2) {E->V2=j;break;}
InsertEdge(Graph, E);
}
}
printf("\n邻接矩阵如下:\n");
for(i=0;i<Graph->Nv;i++){
for(j=0;j<Graph->Nv;j++){
if(Graph->G[i][j]==INFINITY) printf("      ∞       ");
else printf("       %d       ",Graph->G[i][j]);
}
printf("\n");
}
return Graph;
}


int main(){
BuildGraph();
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的应用程序开发框架,使用C++语言进行编写。它提供了丰富的图形用户界面(GUI)和功能模块,使开发者能够快速构建强大的应用程序。 下面是一个简单的Qt图书管理系统的C++教程,帮助你入门Qt开发: 1. 安装Qt:首先,你需要在你的计算机上安装Qt开发环境。你可以从Qt官网(https://www.qt.io/)下载安装包,并按照安装向导进行安装。 2. 创建新项目:打开Qt Creator,点击“新建项目”按钮,选择“Qt Widgets应用程序”模板,并填写项目名称和路径。点击“下一步”按钮,选择项目的构建配置,然后点击“完成”按钮。 3. 设计用户界面:在Qt Creator的“设计”模式下,你可以拖拽和放置各种UI控件来设计图书管理系统的用户界面。例如,你可以添加按钮、文本框、表格等控件,并设置它们的属性和布局。 4. 实现功能逻辑:在Qt Creator的“编辑”模式下,你可以编写C++代码来实现图书管理系统的功能逻辑。例如,你可以添加按钮的点击事件处理函数,实现图书的添加、删除、查询等功能。 5. 编译运行:点击Qt Creator的“构建”按钮,编译你的项目。如果没有错误,你可以点击“运行”按钮来启动图书管理系统。 这只是一个简单的Qt图书管理系统的C++教程,你可以根据自己的需求和理解,进一步扩展和完善系统的功能。希望这个教程能对你有所帮助!如果你有任何问题,可以随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值