关闭

图的存储结构——静态建表(链式前向星)

标签: 数据结构
246人阅读 评论(0) 收藏 举报
分类:

邻接表的静态建表存储图的凡是也称链式前向星。链式前向星方法最开始是基于前向星,是以提高其构造效率为目的设计的存储方式,最终形成的数据却是一个变形的邻接表。

链式前星采用数组模拟链表的方式实现邻接表的功能,并且使用很少的额外空间,可以说是目前建图和遍历效率最高的存储方式。

  head数组存储描述点Vi边信息的链的起点在Edges数组的位置。构造链式前向星就是将新加入的节点链在对应链的最开始并修改head数组的对应位置的值。

这种方法的建图效率非常搞,读入结束,建图就结束,而且没有内存管理



#include<iostream.h>
#include<stdlib.h>
#include<string.h>
const int n=100;
const int m=10;
int head[n];   //存储描述点Vi边信息的链的起点在Edges数组的位置。
//数据结构
//***************************************
struct EdgeNode{
int to; //终点
int w; //权值
int next;  //指向下一条边
};
EdgeNode Edges[m+1];
//***************************************
//信息存储
int main()
{
int i,j,w;
int k;
memset(Edges,0,sizeof(Edges));  //从1开始存,故初始化为0 ,若要从0开始存,则应该初始化为-1;
//**************************************
//信息存储代码
for(k=1;k<=10;k++)   //k表示当前输入的第k条边
{
cin>>i>>j>>w;
Edges[k].to=j;
Edges[k].w=w;
Edges[k].next=head[i];   
head[i]=k;
}
//*************************************
//遍历代码
for(i=1;i<=n;i++)     //对每个起点进行判断,如果next不为0则肯定有边
{
for(int t=head[i];t!=0;t=Edges[t].next) //head[i]表示以第i个顶点为起点,  搜索,直到指向下一条边的next为0则寻找下一顶点
cout<<i<<' '<<Edges[t].to<<' '<<Edges[t].w<<endl;
}
//************************************
return 0;
}

0
0
查看评论

数据结构之图的存储结构——静态建表(链式前向星)

邻接表的静态建表存储图的凡是也称链式前向星。链式前向星方法最开始是基于前向星,是以提高其构造效率为目的设计的存储方式,最终形成的数据却是一个变形的邻接表。 链式前星采用数组模拟链表的方式实现邻接表的功能,并且使用很少的额外空间,可以说是目前建图和遍历效率最高的存储方式。   head数...
  • qq544529563
  • qq544529563
  • 2013-11-10 00:34
  • 1226

图的存储三部曲——其三:静态建表(链式前向星)

数组模拟链表的主要方式是记录下一个j
  • u013573047
  • u013573047
  • 2014-04-05 17:20
  • 1658

图的存储结构---(*链式前向星*)

(写出来仅供随时参考)邻接矩阵 代码引自my_Dijkstratypedef struct ArcCell { int weight; // 邻接矩阵的元素即为图的边的权值 }ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typede...
  • liberty1997
  • liberty1997
  • 2017-04-10 23:56
  • 96

图的存储——链式前向星

参考博客http://blog.csdn.net/acdreamers/article/details/16902023 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,...
  • sdnulixianrui
  • sdnulixianrui
  • 2018-01-27 21:03
  • 25

图的存储(链式前向星)

/*所谓的这种存储边的方法,就是邻接链表在的静态实现(人称:池子法) *就是比较省时间开销 */ #include #include #define MAXM 1000005 #define MAXN 10005 struct node { int v, w, pre; }edge[...
  • zhulei19931019
  • zhulei19931019
  • 2013-08-25 02:24
  • 544

图的两种存储结构及其互相转换

图的存储结构除了要存储 图中各个顶点本身的信息,还要存储边的信息。 常见的图的存储结构有邻接矩阵和邻接表。 邻接矩阵是表示顶点之间相邻关系的矩阵。 图的邻接矩阵是唯一的,适于存储边的数目较多的稠密图。无向图的邻接矩阵一定是一个对称矩阵,可采用压缩存储的思想,只存储上(下)三角形阵的元素即可。不...
  • JYL1159131237
  • JYL1159131237
  • 2017-11-11 10:36
  • 384

图的存储之链式前向星

链式前向星的介绍
  • weixin_39872717
  • weixin_39872717
  • 2017-11-08 21:56
  • 52

图的存储方式——邻接表(链式前向星)

其实,这里只讨论链式前向星,只不过你吧数组下标改为指针就是邻接表.邻接表其实是当边表访问太慢,但邻接矩阵又存不下的时候用的.它的思想就是存储每一个节点与其相连的节点,与邻接矩阵很像.有哪一点不同呢?就是邻接矩阵直接存的是二维数组,而邻接表往往存的是一个一维数组.那么邻接表要怎么实现呢?邻接表使用一个...
  • hzk_cpp
  • hzk_cpp
  • 2018-02-03 20:16
  • 6

图的存储结构(邻接链表法)

#include #include #include "LGraph.h" #include "LinkList.h" #include "LinkQueue.h" typedef struct _tag_LGraph...
  • u012523688
  • u012523688
  • 2014-02-14 23:14
  • 703

静态建表(数组模拟邻接表或链式前向星)

http://blog.csdn.net/qq544529563/article/details/15020427 先挂个链接。
  • qq_36300770
  • qq_36300770
  • 2017-11-05 11:04
  • 81
    个人资料
    • 访问:6598次
    • 积分:417
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条
    文章分类