牛客網 快慢指標引起的段錯誤

2021-09-25 10:54:28 字數 577 閱讀 5320

//快指標找到中間節點

//能正常執行的寫法

listnode*slow=head;

listnode*fast=head;

while(fast!=nullptr&&fast->next!=nullptr)

在除錯的過程中發現,快慢指標尋找中間節點過程中,如果條件變成

//不能正常執行的寫法

listnode*slow=head;

listnode*fast=head;

while(low->next!=nullptr&&fast->next->next!=nullptr)

就會出現段錯誤的問題

分析:第二種寫法中,low->next這一條件判斷實屬多餘,因為low走的慢,出現空指標肯定是在快指標上面;

所以第二種方法的判斷等價於while(fast->next->next!=nullptr),那麼當fast==nullptr時,再去判斷fast->next->next是在是沒有任何意義。

而第一種寫法時,不僅判斷了fast指標而且判斷了fast->next指標,當fast指標或者fast->next指標任何乙個為空時說明到達了鍊錶的尾節點。

ERROR C 字元指標引起的段錯誤

問題 程式編譯通過,執行異常終止。進入除錯模式,報段錯誤。分析 逐行除錯,在為char指標所指內容修改時出錯。原因 char c abc 此時,無法根據指標來修改字串內容。example 1 char str 12 hello 字串用陣列開闢的,它是可以改變的變數。char p str p h 改變...

牛客網 簡單錯誤記錄

題目描述 開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1 記錄最多8條錯誤記錄,迴圈記錄,對相同的錯誤記錄 淨檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 2 超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 3 輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑。輸入...

由pthread create引起的段錯誤

一般執行緒的結束是由程序內的其他執行緒來結束的,呼叫pthread cancel.但是需要考慮到被結束執行緒的性質,一方面,執行緒是可被結束,也可無法結束,即不響應該訊號 另一方面,如果執行緒是可被結束的,那麼結束的方式有兩種,一種是同步,當執行緒收到這個訊號的時候先掛起,等到下乙個取消點時再響應該...