我正在尝试从文件中读取的数据创建链接列表。 以下代码包含在while循环中。 似乎数据被正确选取但未正确插入列表中,因为当我尝试使用头部打印列表数据时,我注意到每次头部似乎都在下一个节点上移动。 这里有什么帮助吗?
newNode = (struct node *)malloc(sizeof(struct node *));
newNode ->name=name;
newNode->number=no;
if(head == NULL){
head = newNode;
head->next=NULL;
temp=head;
}
else{
newNode->next = temp->next;
temp->next=newNode;
temp=newNode;
}
答案 0 :(得分:0)
由于head是列表的第一个节点,我看到的问题是你在开头正确创建newNode,if分支似乎工作正常。但是,else分支似乎是导致问题的那个,它应该看起来像这样:
if(head == NULL){
head = newNode;
head->next = NULL;
temp = head;
} else {
temp->next = newNode;
newNode->next = NULL; //Since, as you said, the list is just reading from a file, the last element inserted will be the last of the list until a new one is read.
temp = newNode;
}
祝你好运,希望这会有所帮助!
编辑: 尝试只输入指向newNode的指针而不仅仅是newNode,上面描述的问题似乎是每个元素指向最后一个,这可以解决它:
if(head == NULL){
head = newNode;
head->next = NULL;
temp = head;
} else {
temp->next = *newNode;
newNode->next = NULL;
temp = newNode;
}
PS:在您的版本中,它将是
temp->next=*newNode;