配列の最後に「ノード」を追加するメソッドがあります。値を保存する場所を見つけたとき (動作します)、これは奇妙なことに古いアドレスから値を削除します。
void appendAtEndOfArray(struct node * item,struct node * arrayPointer){
int i=0;
while (arrayPointer[i].name!='\0') {
i++;
}
arrayPointer[i]=*item; // after this the original memory at &item is changed to '\0'
}
これはおそらく非常に簡単ですが、私はCとポインター全体に不慣れです....
私はこのようにメソッドを呼び出します:
void addVertice(char source, char destination,int cost){
struct node * sourceNode = addNode(source);
struct node * destinationNode = addNode(destination);
appendAtEndOfArray(destinationNode,sourceNode->children);
appendAtEndOfArray(sourceNode,destinationNode->parents);
}
私のノードは次のように定義されています。
struct node {
char name;
bool visited;
int distance;
struct node *children[30];
struct node *parents[30];
} nodes[30];
struct node * addNode(char name){
int n=getNodeByName(name); // if exists reuse
if (n==-1) {
n=++lastNodeIndex;
}
nodes[n].name = name;
nodes[n].visited=false;
return &nodes[n];
}
誰かが私が間違っていることを指摘できますか?