# 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 | |