首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 Josephus 環問題:freopen 讀取文件僅處理第一行

     編輯:程式設計疑難解答

代碼缺陷分析

代碼中 while(scanf(...)) 循環讀取多組測試數據,但鏈表構建與釋放邏輯存在缺陷:

  • 每組數據處理完未將 head 重置為 NULL,導致下一組複用舊鏈表,產生錯誤結果。
  • 內存釋放不完整,殘留節點干擾後續運行。

修正要點

  1. 在 while 循環開始時初始化 head = NULL; p = NULL;。
  2. 每組數據處理完釋放所有節點,確保無內存洩漏。
  3. 避免在同一循環中混用 p 作為構建指針與遍歷指針,建議分離變量。

正確邏輯:讀取一組 → 構建環 → 模擬出列 → 輸出結果 → 釋放環 → 讀取下一組。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved