typedef構造体の配列があります。
それはそのように宣言されています:
vertex vertexArray[numberVertices];
次に、これをメインコードに含めます。
for(i=0;i<numberVertices;i++)
{
if(vertexArray[i].source == 5)
{
source = vertexArray[i].number;
walk(vertexArray, vertexArray[i], source, headMaxPairList );
}
}
うまくいけば、散歩を実行するには:
void walk(vertex *vertexArray, vertex v, int source, maxPairing *head)
{
int i;
adjEdge *traverse;
int moveVertex;
int sink;
moveVertex = vertexArray[v.number-1].number;
if(vertexArray[moveVertex-1].color != 5 && vertexArray[moveVertex-1].sink == 5)
{
sink = vertexArray[moveVertex-1].number;
vertexArray[moveVertex-1].color = 5;
addMaxPair(head, source, sink);
}
else
{
walk(vertexArray, vertexArray[moveVertex-1], source, head);
}
}
ただし、関数でセグメンテーション違反が発生しています。
in walk (vertexArray=Cannot access memory at address 0x7fffff3fefe8
これは、vertexArrayを渡す方法と関係があると思います。
配列は実際にはポインターであるため、vertex *vertexArray
個々のメンバーは単なる頂点であり、ポインターではないことを理解していますvertex v
。
誰かがこれを正しく通過させるのを手伝ってくれるなら、私は感謝するでしょう。
ちなみに、私の散歩が正しく機能するように見えるかどうか誰かがわかるなら、それはプラスです!