`
844604778
  • 浏览: 550593 次
文章分类
社区版块
存档分类
最新评论

数据结构基本算法:图的存储(以邻接链表为例)

 
阅读更多

数据结构的图的建立方法,简单的邻接链表形式代码:

可运行。

对于其他各种的存储方式,等会有一帖。(发现了好东西。。)

代码如下:有链表和顺序数组组成。链表用来存储边的信息,数组用来用存储顶点的数据信息。


图的示例结构如下:


/***** 图的建立********/

/******** 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 ;
}

运行结果如下:




稍后转一贴集合版的数据结构的图的存储方式贴。




  


  
分享到:
评论

相关推荐

    《数据结构与算法》-李春葆 实验报告-基于邻接链表存储的无向图形算法实践-邻接链表

    《数据结构与算法》-李春葆 实验报告-基于邻接链表存储的无向图形算法实践-邻接链表

    《数据结构与算法:Java语言描述》源码.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...

    数据结构与算法:C++描述

    本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...

    数据结构(英语:data structure)是计算机中存储、组织数据的方式。正确的数据结构选择可以提高算法的效率.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    数据结构基本算法实现.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    数据结构与算法复习(Java):排序、字符串、数组、链表、二分查找、二叉树.zip

    例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和...

    【尚硅谷】数据结构与算法(Java数据结构与算法).zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...

    《数据结构与算法分析》书中数据结构与算法实现.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...

    Javaj基本数据结构和算法.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(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 说明

    数据结构与算法

    [数据结构与算法].王晓东.文字版。 第 章 引论 …………………………………… 算法及其复杂性的概念……………… 算法与程序 ………………………… 算法复杂性的概念 ………………… 算法复杂性的渐近性态 …………...

    数据结构:图的建立与输出.doc

    实验8 图的建立与输出 8.1实验目的 1....输入边用循环语句不断输入边(i,j),同时要为边申请边结点,值为j,并用头 插法插入到vi的邻接链表中。如果是无向图,(i,j)有边,等同(j,i)有边,还要 申请

    尚硅谷Java数据结构与java算法(Java数据结构与算法).zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    恋上数据结构系列,数据结构与算法.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    bigsai的数据结构与算法、LeetCode图解、剑指offer图解文章专栏,致力于最好懂的数据结构与算法专栏.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...

    DataStructure-尚硅谷-数据结构与算法-数据结构.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...

    数据结构、算法及常见面试题:java实现.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    数据结构、算法.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    数据结构-算法.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

    数据结构和算法.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)...

Global site tag (gtag.js) - Google Analytics