먼저 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을주기 전에 몇 번 실행됩니다 그대로를 테스트 할 수 위치를 읽는 위치 '
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