在我们执行 insertLast(int item)功能时的链接列表中,我们执行以下步骤:
struct node *temp;
struct node *newItem;
newItem = (struct node*)malloc(sizeof(struct node));
temp = head;
while(temp->next != NULL){
temp = temp->next;
}
temp->next = newItem;
newItem->next = NULL;
但如果我们这样做:
struct node *temp;
struct node *newItem;
newItem = (struct node*)malloc(sizeof(struct node));
temp = head;
while(temp != NULL){
temp = temp->next;
}
temp = newItem;
newItem->next = NULL;
我们收到错误,为什么会这样?
答案 0 :(得分:1)
循环
while(temp != NULL){
...
}
将以temp == NULL
终止,即在超出列表末尾之后。然后
temp = newItem;
将指向新创建的对象的指针分配给temp
变量 - 但这与列表无关。
因此没有任何“错误”的理由(除了新项目不附加到列表中)。
答案 1 :(得分:0)
在第二个代码块中,不要将最后一个元素的链接设置为指向新插入的元素。