}
num_beg = lst[0].v_beg;
num_end = lst[0].v_end;
}
else if (gr.type == Graph_Type.TYPE_MATRIX)
{
for (int j = 0; j < gr.V; j++)
{
for (int i = 0; i < gr.V; i++)
{
if (gr.EdgeExists((int)gr.vertexData[j], (int)gr.vertexData[i]))
{
num_beg = (int)gr.vertexData[j];
num_end = (int)gr.vertexData[i];
visited.Clear();
visited.Add(start);
return;
}
}
}
}
}
public override void end()
{
if (gr.type == Graph_Type.TYPE_LIST)
{
LGraph lg = (LGraph)gr;
int i = lg.links.Count - 1;
List<GEdge> lst = (List<GEdge>)(lg.links[i]);
while (lst.Count == 0)
{
i++;
lst = (List<GEdge>)(lg.links[i]);
}
int last = lst.Count - 1;
num_beg = lst[last].v_beg;
num_end = lst[last].v_end;
}
else if (gr.type == Graph_Type.TYPE_MATRIX)
{
for (int j = gr.V - 1; j > 0; j--)
{
for (int i = gr.V - 1; i > 0; i--)
{
if (gr.EdgeExists((int)gr.vertexData[j], (int)gr.vertexData[i]))
{
num_beg = (int)gr.vertexData[j];
num_end = (int)gr.vertexData[i];
for (int x = 0; x < gr.E + 1; x++)
visited.Add(x);
return;
}
}
}
}
}
public override object Current
{
get
{
int idx = (int)gr.getVertex(num_beg);
switch (gr.type)
{
case Graph_Type.TYPE_LIST:
{
foreach (GEdge edge in (List<GEdge>)((LGraph)gr).links[idx])
if (edge.v_end == num_end)
return edge;
break;
}
case Graph_Type.TYPE_MATRIX:
{
MGraph mg = (MGraph)gr;
for (int i = 0; i < gr.V; i++)
if (mg.matrix[idx, i] != null)
{
if (mg.matrix[idx, i].v_end == num_end)
return mg.matrix[idx, i];
}
break;
}
}
return new GEdge(num_beg, num_end);
}
set
{
GEdge val = (GEdge)value;
num_beg = (int)gr.vertexData[val.v_beg];
num_end = (int)gr.vertexData[val.v_end];
}
}
}
class Inbox_Edge_Iterator : Iterator
{
int vertex_number;
int vertex_idx;
public Inbox_Edge_Iterator(Graph g, int num)
: base(g)
{
vertex_number = num;
vertex_idx = (int)g.getVertex(num);
//MGraph mgraph = (MGraph)g;
for (int i = 0; i < g.V; i++)
{
if (g.EdgeExists((int)g.vertexData[i], vertex_number))
{
current_elem = i;
break;
}
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.