`
wsql
  • 浏览: 11778332 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

无向图的顺序存储结构(代码)

 
阅读更多

大家必须理解图的概念,在这就不做介绍了。下面直接展示代码:


//无向图的顺序存储结构

# include <stdlib.h>
# include <iostream.h>

# define zhi 40

//定义图的数据类型
struct mygraphic
{
char dian[zhi];//存放顶点的信息
int bian[zhi][zhi];//存放边的信息
int diannum;//存放顶点的个数
};

//图的初始化,给元素赋上相应的初值
void chushihua(struct mygraphic &tu)
{
int i,j;
tu.diannum=0;
for(i=0;i<zhi;i++)
{
tu.dian[i]='';//给存放图的顶点的变量赋初值
for(j=0;j<zhi;j++)
tu.bian[i][j]=0;//给存放图顶点和顶点关系的变量赋初值
}
}

//图的输入
void shuru(struct mygraphic &tu)
{
int i;
int j;
int num1;//存放总共要输入顶点的个数
char ch;//存放顶点信息

cout<<"请输入要输入的图的顶点的个数:";
cin>>num1;

if(num1>zhi)//程序的健壮性
{
cout<<"此图信息太大,无法存储该图!\n";
return;
}
//顶点信息的输入
for(i=0;i<num1;i++)
{
cout<<"请输入第"<<i+1<<"个顶点的信息:";
cin>>ch;
tu.dian[i]=ch;
}
tu.diannum=num1;
cout<<"顶点信息输入完成!\n\n\n";

//边的信息的输入
for(i=0;i<num1;i++)
{
cout<<"请依次输入第"<<i+1<<"个顶点和其他(包括自身)所有顶点是否可通?\n";

for(j=0;j<num1;j++)
{
cout<<"是否和第"<<j+1<<"个顶点可通(通:1;不同0):";
cin>> tu.bian[i][j];
}
cout<<"\n";
}
cout<<"边的输入结束!\n\n";
}


//图的输出函数
void shuchu(struct mygraphic &tu)
{
int i;
int j;
int k;
k=tu.diannum;
//输入第一行顶点的信息
cout<<" 顶 点";
for(i=0;i<k;i++)
cout<<" "<<tu.dian[i];

cout<<"\n";
for(i=0;i<k;i++)
{
cout<<" "<<tu.dian[i]<<" ";//第一列为顶点的信息

for(j=0;j<k;j++)
cout<<" "<<tu.bian[i][j];//顶点和顶点之间的关系
cout<<"\n";
}
cout<<"注意:1表示两顶点可通;0表示两顶点不可通!\n\n";
cout<<"输出操作已完成!\n\n";
}

//主函数
void main()
{
int option;//存放用户的选项

struct mygraphic tu;//定义存放图信息的变量类型
chushihua(tu);//初始化图的变量类型

option=0;//存放用户的选项
while(option!=3)
{
cout<<"\n 菜单\n\n";
cout<<" 1、输入图的信息\n";
cout<<" 2、输出图的信息\n";
cout<<" 3、退出\n\n";
cout<<"请输入选项:";
cin>>option;

switch(option)
{
case 1:
shuru(tu);
break;
case 2:
shuchu(tu);
break;
case 3:
break;
default:
break;
}
}

}


心得:对于图的存储,第一:我们要存储顶点的信息;第二:我们要存储顶点和顶点的关系。我们通过邻接矩阵的方式存放顶点和顶点的关系!不论是顺序存储还是链式存储,首先,要考虑,存放顶点的数据结构类型,存放顶点和顶点关系的数据结构类型,存放表头的数据结构类型,可能对于图存储的原理你很清楚,但是,你一定要亲自敲一敲,里面有很多值得我们注意的地方。

分享到:
评论

相关推荐

    2022数据结构课设easyx实现顺序表,链式栈和无向图的算法的动态演示代码

    3)无向图或有向图(存储结构可选:相邻 矩阵或邻接表)。 2、在指定数据结构类型基础上,加载数据结构初始化数据,以指定元素 (节点)集、关系集的形式初始化指定的数据结构,并在界面中绘制出相应的 图形以及数据存储的...

    数据结构课程设计(二叉树、猴子、图)

    含代码和报告 ...3. 项目三:任务:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。

    数据结构 严蔚敏 代码

    范例1-105 无向图的邻接多重表存储表示 344 ∷相关函数:CreateGraph函数 1.7.5 最小生成树 355 范例1-106 最小生成树 355 ∷相关函数:MiniSpanTree_PRIM函数 1.7.6 关节点和重连通分量 359 范例1-107 关节点和重...

    数据结构一学期作业(顺序栈,三元组,串,树,邻接表,邻接矩阵,二叉树,等等代码c语言实现)

    一学期数据结构的代码作业,基本上涵盖了课本上面所有算法的C语言代码实现,压缩包无密码 2019/11/03 21:43 1,478 BF_KMP.cpp 2019/11/03 21:22 2,664 KMP.cpp 2019/10/24 18:49 3,956 LinkStack.cpp 2019/11/21 ...

    史上最全经典数据结构算法c语言实现代码合集

    线性顺序存储结构.txt 线索化二叉树.txt 绘制圆.txt 编随机数.txt 网络最短路径Dijkstra算法.txt 自我复制.txt 节点.txt 苹果分法.txt 螺旋数组1.txt 螺旋数组2.txt 试题.txt 诺汉塔画图版.txt 读写...

    数据结构与算法全集(C源代码+详细注释)

    │ ├─图的邻接表存储结构 │ │ ALGraph.cpp │ │ ALGraph.h │ │ InfoType.cpp │ │ InfoType.h │ │ LinkList.cpp │ │ LinkQueue.cpp │ │ LinkQueue.h │ │ Main.cpp │ │ Status.h │ │ t1.txt │ ...

    经典数据结构算法c语言实现代码(大全)

    线性顺序存储结构.txt 线索化二叉树.txt 绘制圆.txt 编随机数.txt 网络最短路径Dijkstra算法.txt 自我复制.txt 节点.txt 苹果分法.txt 螺旋数组1.txt 螺旋数组2.txt 试题.txt 诺汉塔画图版.txt 读写...

    JAVA 算法数据结构代码 演习实践.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    校园导游 校园导航程序代码 c语言

    (1)构造一个无向图G并用邻接矩阵来存储。 (2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,最短路径长 度就用一维数组d[i]存放;i的范围:0~20。 (3)一维数组have[]是...

    数据结构课程设计-C++实验代码

    这个是我亲手所做的数据结构课程设计,完成了: 实验一 单链表的定义和应用 实验要求: ...1.定义一个顺序存储的有序表 2.有序表折半查找 对给出查找结果的同时,输出查找过程中和关键字比较的次数

    数据结构与算法代码库.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    数据结构与算法练习代码.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 ...

    学习数据结构和算法的代码分析.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    尚硅谷老韩java版算法和数据结构讲解代码笔记整理.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    《剑指 Offer》 Python, Java, C++ 解题代码,LeetBook《图解算法数据结构》配套代码仓.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    学习java数据结构与算法的练习代码.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    黑马程序员 黑马 数据结构与算法 课件 源代码.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    JAVA 算法,数据结构,多线程等学习代码.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    Mooc 算法与数据结构体系课代码,建议买课程学习.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

Global site tag (gtag.js) - Google Analytics