第十二周技术博客
2016-05-18 21:23
316 查看
第十二周技术博客
数据结构
有向图与无向图
// 242陈坤鑫第十二周.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#define MaxInt 32767 //表示极大值,即∞
//DG表示有向图,AG表示无向图,WDG有向网 ,WAG无向网
typedef enum{ DG,AG,WDG,WAG} Graph;
#define MVNum 100 //最大顶点数
typedef char VexType; //假设顶点的数据类型为字符型
typedef int AdjType; //假设边的权值类型为整型
typedef struct{
Graph kind;
VexType vexs[MVNum]; //顶点表
AdjType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点个数和边个数
}AdjGraph;
//此函数输入图的邻接矩阵结构pg和某个顶点数据v,输出与其邻接顶点的信息
void PrintfGraph(AdjGraph *pg,VexType v){
int i,posi;
for(i=0;i<pg->vexnum;i++){ //判断此图是否有该顶点V
if(pg->vexs[i]==v)
break;
}
if(i==pg->vexnum)
{
printf("无此顶点%c数据\n",v);
return;;
}
posi=i;//有该顶点数据,保存此顶点存放在数组的位置posi
for(i=0;i<pg->vexnum;i++){
if(pg->arcs[i][posi]!=MaxInt){
printf("%c顶点到%c顶点的距离为%d ",pg->vexs[i],v,pg->arcs[i][posi]);
}
}
printf("\n");
for(i=0;i<pg->vexnum;i++){
if(pg->arcs[posi][i]!=MaxInt){
printf("%c顶点到%c顶点的距离为%d ",v,pg->vexs[i],pg->arcs[posi][i]);
}
}
printf("\n\n");
}
int main(int argc,char *argv[])
{
printf("242陈坤鑫\n");
AdjGraph ag;
ag.vexnum=6;
ag.kind=WAG;
int i,j;
for (i=0;i<MVNum;i++)
{
ag.vexs[i]=0;
for (j=0;j<MVNum;j++)
{
ag.arcs[i][j]=MaxInt;
}
}
for(i=0;i<ag.vexnum;i++)
ag.vexs[i]='A'+i;
int A=0,B=1,C=2,D=3,E=4,F=5;
ag.arcs[A][B]=3;ag.arcs[B][A]=3;
ag.arcs[A][C]=5;ag.arcs[C][A]=5;
ag.arcs[B][D]=4;ag.arcs[D][B]=4;
ag.arcs[C][E]=2;ag.arcs[E][C]=2;
ag.arcs[D][F]=8;ag.arcs[F][D]=8;
ag.arcs[E][F]=1;ag.arcs[F][E]=1;
ag.arcs[A][F]=9;ag.arcs[F][A]=9;
AdjGraph ag2;
ag2.vexnum=6;
ag2.kind=WDG;
for (i=0;i<MVNum;i++)
{
ag2.vexs[i]=0;
for (j=0;j<MVNum;j++)
{
ag2.arcs[i][j]=MaxInt;
}
}
for(i=0;i<ag.vexnum;i++)
ag2.vexs[i]='A'+i;
ag2.arcs[A][B]=3;ag2.arcs[A][C]=5;
ag2.arcs[B][D]=4;ag2.arcs[D][F]=8;
ag2.arcs[C][E]=2;ag2.arcs[E][F]=1;
ag2.arcs[A][F]=9;
char c[20];
while(true){
printf("请输入顶点数据:");
scanf("%s",c);
if(c[0]=='0')break;
printf("无向图\n");
PrintfGraph(&ag,c[0]);
printf("\n有向图\n");
PrintfGraph(&ag2,c[0]);
}
return 0;
}
数据结构
有向图与无向图
// 242陈坤鑫第十二周.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#define MaxInt 32767 //表示极大值,即∞
//DG表示有向图,AG表示无向图,WDG有向网 ,WAG无向网
typedef enum{ DG,AG,WDG,WAG} Graph;
#define MVNum 100 //最大顶点数
typedef char VexType; //假设顶点的数据类型为字符型
typedef int AdjType; //假设边的权值类型为整型
typedef struct{
Graph kind;
VexType vexs[MVNum]; //顶点表
AdjType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点个数和边个数
}AdjGraph;
//此函数输入图的邻接矩阵结构pg和某个顶点数据v,输出与其邻接顶点的信息
void PrintfGraph(AdjGraph *pg,VexType v){
int i,posi;
for(i=0;i<pg->vexnum;i++){ //判断此图是否有该顶点V
if(pg->vexs[i]==v)
break;
}
if(i==pg->vexnum)
{
printf("无此顶点%c数据\n",v);
return;;
}
posi=i;//有该顶点数据,保存此顶点存放在数组的位置posi
for(i=0;i<pg->vexnum;i++){
if(pg->arcs[i][posi]!=MaxInt){
printf("%c顶点到%c顶点的距离为%d ",pg->vexs[i],v,pg->arcs[i][posi]);
}
}
printf("\n");
for(i=0;i<pg->vexnum;i++){
if(pg->arcs[posi][i]!=MaxInt){
printf("%c顶点到%c顶点的距离为%d ",v,pg->vexs[i],pg->arcs[posi][i]);
}
}
printf("\n\n");
}
int main(int argc,char *argv[])
{
printf("242陈坤鑫\n");
AdjGraph ag;
ag.vexnum=6;
ag.kind=WAG;
int i,j;
for (i=0;i<MVNum;i++)
{
ag.vexs[i]=0;
for (j=0;j<MVNum;j++)
{
ag.arcs[i][j]=MaxInt;
}
}
for(i=0;i<ag.vexnum;i++)
ag.vexs[i]='A'+i;
int A=0,B=1,C=2,D=3,E=4,F=5;
ag.arcs[A][B]=3;ag.arcs[B][A]=3;
ag.arcs[A][C]=5;ag.arcs[C][A]=5;
ag.arcs[B][D]=4;ag.arcs[D][B]=4;
ag.arcs[C][E]=2;ag.arcs[E][C]=2;
ag.arcs[D][F]=8;ag.arcs[F][D]=8;
ag.arcs[E][F]=1;ag.arcs[F][E]=1;
ag.arcs[A][F]=9;ag.arcs[F][A]=9;
AdjGraph ag2;
ag2.vexnum=6;
ag2.kind=WDG;
for (i=0;i<MVNum;i++)
{
ag2.vexs[i]=0;
for (j=0;j<MVNum;j++)
{
ag2.arcs[i][j]=MaxInt;
}
}
for(i=0;i<ag.vexnum;i++)
ag2.vexs[i]='A'+i;
ag2.arcs[A][B]=3;ag2.arcs[A][C]=5;
ag2.arcs[B][D]=4;ag2.arcs[D][F]=8;
ag2.arcs[C][E]=2;ag2.arcs[E][F]=1;
ag2.arcs[A][F]=9;
char c[20];
while(true){
printf("请输入顶点数据:");
scanf("%s",c);
if(c[0]=='0')break;
printf("无向图\n");
PrintfGraph(&ag,c[0]);
printf("\n有向图\n");
PrintfGraph(&ag2,c[0]);
}
return 0;
}
周数 | 专业学习目标 | 专业学习时间 | 新增代码量 | 博客发表量 | 人文方面的学习 | 知识技能总结 |
第十而周 | 数据结构有向图和无向图 | 3 | 350h | 2 | 无 | 有向图和无向图难以区分运用 |
相关文章推荐
- PHP AJAX返回 "TEXT"
- 解码H264文件的一些基础知识
- 极角排序
- Java文件流 字节流和字符流
- 深入浅出: Java回调机制(异步)
- 我的Unity3D学习日记-01
- JAVA获取本机IP地址
- 从头认识多线程-2.23 静态内部类的同步机制跟普通类相同
- Try Git 译文
- java中重载和重写
- 矩阵快速幂+map 雷神之路 scu dp练习A题
- POJ1426 建议打表做该题/用数组模拟队列(比STL队列速度要快)
- Yii2.0 自定义日志类
- Libgdx之Label Image
- 面向项目(十一)—— 库的使用
- JAVA-007前面所学总结加深
- 第十三周的学习进度表
- IOI2000 邮局
- iOS蓝牙开发(一)蓝牙相关基础知识
- 渣渣的艰难的找实习经历