码迷,mamicode.com
首页 > 其他好文 > 详细

链式前向星

时间:2017-12-02 13:04:08      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:https   title   ios   order   type   oid   ace   实时   current   

感觉链式前向星这个名字比领接表高端了很多(逃

简而言之,链式前向星就是一种存图的东西

 

(话不多说,先上代码

#include <iostream>
#include <cstdio>
using namespace std;

struct Edge{
    int to,next;
}edge[505];

int cnt=0,h[505],n,bbg,een;

void add_edge(int bg, int en){
    cnt++;
    edge[cnt].to=en;
    edge[cnt].next=h[bg];
    h[bg]=cnt;
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>bbg>>een;
        add_edge(bbg,een);
    }
}

上面就是一个模板

下面就以这个二叉树为例来解释一下

技术分享图片

用h[t]来存储在t节点下的每个实时的边,以便之后存为前驱

用edge[i].next来记录第i条边前驱

如上图,输入为(7 5表示7个节点,5条边)

7 5
1 2
1 6
2 3
2 4
6 7

存储后即得到

i 1 2 3 4 5
edge[i].to 2 6 3 4 7
edge[i].next 0 1 0 3 0
h[t] h[1]=1 h[1]=2 h[2]=2 h[2]=4 h[6]=5

 

 

 

 

 

所以要遍历的话,就用两个for嵌套,第一个遍历所有节点,第二个以链式的方式,从最后一个h[t],向前依次遍历

代码如下

for(int i=1;i<=n;i++)
        for(int j=h[i];j>0;j=edge[j].next)

 

链式前向星

标签:https   title   ios   order   type   oid   ace   实时   current   

原文地址:http://www.cnblogs.com/labelray/p/7953693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!