假設列表中已經有3個節點(即10,20)。我想插入30所以寫了如下C中的鏈表中的麻煩
struct node *p,*temp;
p=start;
temp=(struct node*)malloc(sizeof(struct node));
temp->info=30;
temp->link=NULL;
while(p-link!=NULL)
{
p=p->link;
}
p->link=temp;
它完美地工作,直到我這樣做:while(p!=NULL)
休息一樣.. 同樣在顯示我寫爲節點的情況下,如下
while(p!=NULL)
{
printf("%d \n",p->info);
p=p->link;
}
這也工作得很好,直到我改變它:while(p->link!=NULL)
我想知道發生了什麼,爲什麼不工作? 如果在插入任何節點的情況下顯示所有數據,while(p-> link!= NULL),給我說明爲什麼while(p!= NULL)的原因?
'而(對鏈路= NULL;!!'==>'而(對 - >鏈接= NULL)'' – mch
P->鏈接= NULL'檢查是否'對 - > link'是一個空指針。'p!= NULL'檢查是否'p'是空指針。不是在至少相同。 –
通過'而(對運行後!= NULL)'loop,'p'是'NULL',這意味着你不能用'* p'或'p-> link'來解引用它。 –