while(num!=q->num&&q!=NULL){
q=q->next;
}//q为一个链表
已找到原因,吧q!=NULL和num!=q->num调一下位置就行了。
PHPz2017-04-17 14:43:38
這不就是短路求值的問題嘛.
作為"&&"和"||"運算子的運算元表達式,這些表達式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱為短路求值(short-circuit evaluation)。這是這兩個操作符的一個重要屬性。
應該先判斷 q 是否為 null, 根據短路求值的規則, 當 q 不為 null 時, 才執行語句 num!=q->num. 這樣就可以避免空指標的問題了.