数据结构的图的建立方法,简单的邻接链表形式代码:
可运行。
对于其他各种的存储方式,等会有一帖。(发现了好东西。。)
代码如下:有链表和顺序数组组成。链表用来存储边的信息,数组用来用存储顶点的数据信息。
图的示例结构如下:
/***** 图的建立********/
/******** written by C_Shit_Hu ************/
//////////////数据结构///////////////
/****************************************************************************/
/*
图的存储方式常见的有两种--邻接矩阵存储方法和邻接链表存储方法
···邻接矩阵核心思想:利用两个数组存储一个图,一个数组是一个一维数组用于存储顶点信息,一个是一个二维数组用于存储顶点的边的信息
···缺点:不适用于存储稀疏图
利用邻接表建立图,弥补邻接矩阵的不足的方法。有链表和顺序数组组成。链表用来存储边的信息,数组用来用存储顶点的数据信息。
-----具体见博客说明:
*/
/****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
//定义单链表中的结点的类型
typedef struct ArcNode{
int adjvex; // 该边指向的顶点在顺序表中的位置
struct ArcNode *next; // 下一条边*/
}ArcNode;
// 顶点类型
typedef struct VNode{
int data; // 顶点中的数据信息
ArcNode *firstarc; // 指向单链表,即指向第一条边
}VNode;
void CreatGraph(int n , VNode G[] )
{
int i,e;
ArcNode *p , *q;
printf("Input the information of the vertex\n");
for(i=0;i<n;i++){
scanf("%d",&G[i]);
G[i].firstarc = NULL; // 初始化第一条边为空
}
for(i=0;i<n;i++)
{
printf("Creat the edges for the %dth vertex\n",i) ;
scanf("%d",&e);
while(e!=-1){
p = (ArcNode *)malloc(sizeof(ArcNode)); // 创建一条边
p->next = NULL;
p->adjvex = e;
if(G[i].firstarc == NULL) G[i].firstarc = p; // i结点的第一条边
else q->next = p; // 下一条边
q = p;
scanf("%d",&e);
}
}
}
int main()
{
VNode G[5];
CreatGraph(5,G);
getchar();
return 0 ;
}
运行结果如下:
稍后转一贴集合版的数据结构的图的存储方式贴。
分享到:
相关推荐
《数据结构与算法》-李春葆 实验报告-基于邻接链表存储的无向图形算法实践-邻接链表
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
数据结构与算法分析 经典... 10.1.3 旋转 10.2 代码实现 10.3 说明 11 排序 11.1 基本概念 11.2 代码实现 12 图的储存 12.1 基本概念 12.2 邻接矩阵 12.3 邻接链表 13 图的遍历 13.1 基本概念 13.2 代码实现 13.3 说明
[数据结构与算法].王晓东.文字版。 第 章 引论 …………………………………… 算法及其复杂性的概念……………… 算法与程序 ………………………… 算法复杂性的概念 ………………… 算法复杂性的渐近性态 …………...
实验8 图的建立与输出 8.1实验目的 1....输入边用循环语句不断输入边(i,j),同时要为边申请边结点,值为j,并用头 插法插入到vi的邻接链表中。如果是无向图,(i,j)有边,等同(j,i)有边,还要 申请
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...
算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...