首先,我是C的新手,並且被拋入一個我必須使用C的程序中。現在我相信我的問題與指針有關,但是當我嘗試打印列表時(以確保我已經將它存儲在正確的順序,我的程序第二次通過循環後崩潰。打印時出現無限循環
這是我插入功能插入的最低時間需要,我相信它是正確的,但還沒有能爲我打印崩潰
void insertProcess(Process& process, Process* &head, Process* curr, Process* prev){
curr = head;
if(head == NULL){
head = &process;
}
else{
prev = head;
while(process.timeNeeded > curr->timeNeeded){
prev = curr;
curr = curr->next;
}
prev->next = &process;
process.next = curr;
}
}
這裏是我的簡單的循環,這應該打印的清單,這將給人一種一個「訪問VIO運行之前幾次測試lation閱讀位置'
while(curr->next != NULL){
printf("%s %i %i %i\n", process.processName, process.arrivalTime, process.timeNeeded, process.priority);
curr = curr->next;
}
我很確定錯誤會出現在這些代碼段之一,我將不勝感激任何幫助。
編輯:好,在第一張海報的幫助下,我修復了原始問題,但是現在我在打印時出現了無限循環。我很確定這是因爲我按順序插入,並且從未在最後一項之後設置NULL指針。這看起來是否正確,如果有的話,有什麼方法可以解決嗎?再次感謝
'Process *&head'不合法c。你不能通過引用傳遞。 – Dave
你是用C++編譯器編譯的嗎? – Dave
其實我是,我所熟悉的,以及我們的班級正在做什麼,因爲我們沒有C的知識,也沒有時間學習它。我們使用C的真正原因是我們不會使用C++的面向對象的屬性。而且我知道,當我做這件事時看起來並不正確,但是每次我插入插件時都會重置頭部,如果還有其他方法可以做到這一點,我會很樂意修復它。 – user1019430