Scilab function
Last update : 16/6/2004

chain_struct - structure chaînée à partir d'une liste d'adjacence d'un graphe

### Calling Sequence

  `[fe,che,fn,chn] = chain_struct(g)`
  `[fe,che,fn,chn] = chain_struct(lp,la,ls)`

### Parameters

- `g` : graphe (liste)
- `lp` : vecteur ligne de pointeurs de la description du graphe sous forme de liste d'adjacence (sa taille est le nombre de sommets du graphe + 1)
- `la` : vecteur ligne, tableau d'arcs de la description du graphe sous forme de liste d'adjacence (sa taille est le nombre d'arêtes du graphe)
- `ls` : vecteur ligne, tableau de sommets de la description du graphe sous forme de liste d'adjacence (sa taille est le nombre d'arêtes du graphe)
- `fe` : vecteur ligne des numéros des premières arêtes partant des sommets (sa taille est le nombre de sommets du graphe)
- `che` : vecteur ligne des numéros des arêtes chaînées (sa taille est le nombre d'arêtes du graphe)
- `fn` : vecteur ligne des numéros des premiers sommets atteints par les arêtes de `fe` (sa taille est le nombre de sommets du graphe)
- `chn` : vecteur ligne des sommets atteints par les arêtes de `che`

### Description

`chain_struct` calcule les vecteurs lignes de la description par structure chaînée d'arêtes du graphe `g`. Il est aussi possible de donner directement `chain_struct`, la liste d'adjacence du graphe. Ceci est plus efficace si la liste d'adjacence est déjà disponible puisque `chain_struct` l'utilise pour faire les calculs.

Les vecteurs `fe`, `che`, `fn` et `chn` décrivent la structure chaînée de la manière suivante :

`fe(i))` est le numéro de la première arête partant du sommet i,

`che(fe(i))` est le numéro de la deuxième arête partant du sommet i, `che(che(fe(i)))` est le numéro de la troisième arête partant du sommet i et ainsi de suite jusqu'à ce que la valeur soit égale à 0.

`fn(i)` est le numéro du premier sommet atteint à partir du sommet i

`ch(i)` est le numéro du sommet atteint par l'arête `che(i)`.

### Examples

    ta=[1 1 2 3 5 4 6 7 7 3 3 8 8 5];
    he=[2 3 5 4 6 6 7 4 3 2 8 1 7 4];
    g=make_graph('foo',1,8,ta,he);
    g('node_x')=[116 231 192 323 354 454 305 155];
    g('node_y')=[118 116 212 219 117 185 334 316];
    show_graph(g);
    [fe,che,fn,chn] = chain_struct(g)

### See Also

`adj_lists`, `graph_2_mat`,