}
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];
}
}
}
ОБЩАЯ ХАРАКТЕРИСТИКА:
Это объект, позволяющий клиентской программе получить доступ к значениям данных, скрытых в коллекции «Простой статический граф», играя роль обобщенного указателя на данные, хранящиеся в коллекции. Даёт возможность перемещаться по исходящим рёбрам заданной вершины, осуществлять переход к следующим и получать дескриптор текущего ребра.
ДАННЫЕ
Параметры
vertex_number – номер вершины, из которой исходят ребра
ОПЕРАЦИИ:
Конструктор
Вход: ссылка на объект типа «Простой граф» и номер вершины v_num
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.