私はグローバルリストを持っています
typedef struct center {
char center_name[100];
char hostname[100];
int port;
struct center *next_center;
} center;
だから私が始めるとき:
int main(int argc, char** argv) {
center *head = null;
parse(argv, &head);
}
解析する場所:
void parser (char** argv, center **head) {
//read a file amd add the elements to a newCenter
addToCenterList(newcenter, head);
}
ここで、addToCenterList:
void addToCenterList(center *newcenter, center **head) {
center *newNode = malloc(sizeof(center));
strcpy(newNode->center_name, newcenter->center_name);
strcpy(newNode->hostname, newcenter->hostname);
newNode->port = newcenter->port;
newcenter->next_center = NULL;
if (*head == NULL)
*head = newNode;
else {
//problem starts here, it never adds after the first element
center **iterator;
center ite;
iterator = head;
ite = **iterator;
while(1){
if(ite.next_center == NULL){
*ite.next_center = *newNode;
break;
}
}
}
私の問題はelseから始まります。リストの先頭のアドレスを渡しています。したがって、リスト内を移動できる変数が必要であることはわかっています。私は多くのことを試しましたが、どれもうまくいきません。私は念頭に置いていました:リストを繰り返し、各「ノード」のアドレスをいくつかの変数に保存し、そのアドレスの内容(ノード!)がnext_center == NULLの場合、それが最後の要素。その後、その next_center アドレスに新しいコンテンツを割り当てるだけです。
それが私がやろうとしていることです。私はそれを機能させる方法がわかりません....
前もって感謝します。