boboya98   3년 전

29행에 pop 함수에서 큐가 empty인 경우를 빼줫는데

40행에 메인 함수에서 따로 분류를 안해주면 답이 제대로 안나오더라고요

이유좀 알려주세요...

맞은코드 전문 :https://www.acmicpc.net/source...

틀린코드 전문:https://www.acmicpc.net/source...

밑에 코드는 필요한 부분 빼고 다 삭제했습니다

djm03178   3년 전

맞은 코드가 비공개 상태입니다.

올려주신 코드 상에서 31번째 줄에서 바로 return을 하고 있어서 비어있는 경우 pop읻느 empty든 출력을 하러 들어갈 수가 없습니다.

boboya98   3년 전

혹시 return -1이 -1을 반환하는게 아니고 종료 하는건가요???

코드는 공개했습니다


djm03178   3년 전

코드를 부분 부분 잘라놓으셔서 제가 잘못 봤네요. 맨 아래쪽은 메인 함수 부분이군요. 코드를 중요한 부분만 잘라서 올리는 것보다는 전체를 올리고 주석 등으로 특정 부분을 강조하는 것이 맥락을 파악하기도 좋고, 직접 복사해서 테스트해보기에도 좋기 때문에 그 쪽을 더 추천합니다.

그런데 코드와 틀린 코드의 차이는 말씀하신 것과는 달리 단지 front와 back 명령어 시 empty를 먼저 체크하느냐의 차이인 것 같네요.

kgun610   3년 전

오류 메시지에도 나온 것이지만 pop 함수 에서 empty를 호출할 때 queue 구조체 q를 잘못된 방식으로 넘겨주는 것 같네요.

맞게 하신 40번째 줄 처리를 보면 empty 함수 호출에 queue 구조체의 포인터를 넘겨주고 있는데

기존의 pop 함수에서 empty 를 호출 할 때는 queue 의 포인터의 포인터를 넘겨주어서 잘 처리되지 못한 것 같습니다.

pop 함수의

if (empty(&q))

부분을 

if (empty(q))

로 고쳐보세요

댓글을 작성하려면 로그인해야 합니다.