我有一个全局列表
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 地址分配一个新内容。
这就是我想要做的。我不知道如何使它工作....
提前致谢。