# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1254134924 -7200
# Node ID 32baeb8e5c8fc2cec7dd167588af17a1777b3c8b
# Parent fb93895f84d9050f68f4e9db6f3d70da4038be69
Modify the implementation of ListDigraph::ArcIt (#311)
The new implementation is based on out-arc iteration (like
ListGraph::ArcIt) instead of in-arc iteration to make it
consistent with the documentation.
diff --git a/lemon/list_graph.h b/lemon/list_graph.h
|
a
|
b
|
|
| 116 | 116 | void first(Arc& arc) const { |
| 117 | 117 | int n; |
| 118 | 118 | for(n = first_node; |
| 119 | | n!=-1 && nodes[n].first_in == -1; |
| | 119 | n != -1 && nodes[n].first_out == -1; |
| 120 | 120 | n = nodes[n].next) {} |
| 121 | | arc.id = (n == -1) ? -1 : nodes[n].first_in; |
| | 121 | arc.id = (n == -1) ? -1 : nodes[n].first_out; |
| 122 | 122 | } |
| 123 | 123 | |
| 124 | 124 | void next(Arc& arc) const { |
| 125 | | if (arcs[arc.id].next_in != -1) { |
| 126 | | arc.id = arcs[arc.id].next_in; |
| | 125 | if (arcs[arc.id].next_out != -1) { |
| | 126 | arc.id = arcs[arc.id].next_out; |
| 127 | 127 | } else { |
| 128 | 128 | int n; |
| 129 | | for(n = nodes[arcs[arc.id].target].next; |
| 130 | | n!=-1 && nodes[n].first_in == -1; |
| | 129 | for(n = nodes[arcs[arc.id].source].next; |
| | 130 | n != -1 && nodes[n].first_out == -1; |
| 131 | 131 | n = nodes[n].next) {} |
| 132 | | arc.id = (n == -1) ? -1 : nodes[n].first_in; |
| | 132 | arc.id = (n == -1) ? -1 : nodes[n].first_out; |
| 133 | 133 | } |
| 134 | 134 | } |
| 135 | 135 | |