mrlazydev   1년 전

연결리스트로 스택을 구현하려고 하는데, 정확히 어디서부터 틀린 것인지 잘 모르겠습니다.

애초에 컴파일에러가 뜨네요.


어디가 문제인 걸까요?

bamgoesn   1년 전

일단 컴파일 에러는 12~13행때문에 납니다. 컴파일러가 13행을 보고 stack_top을 알 수 없는 타입으로 간주합니다. 전역 변수의 선언은 지역 변수를 선언할 때랑 똑같이 하면 안 되고, 선언과 동시에 초기화해야 합니다. 둘을 하나로 합쳐서 nodeType *stack_top = NULL;이라고 하면 일단 컴파일은 됩니다.

다만 지금 그걸 고치고 컴파일을 하면 치명적인 경고가 많이 나옵니다. 예를 들어 20행에서 head->next는 int*형인데 거기에 함수인 top을 넣는다거나, 53행에서 등호를 하나만 써서 대입문을 evaluate한 걸 루프문의 조건문으로 쓰고 있다거나... 말고도, 19행의 head는 아무것도 가리키지 않은 채로 선언됐는데 head->next에 무언가를 넣으려고 하시기도 하네요. 혹시 동적할당에 대해서 공부해보신 적이 있으신가요?

일일이 다 고쳐드리긴 좀 어렵네요. 만약 컴파일을 gcc로 하신다면 컴파일할 때 -Wall 옵션을 붙이면 디버깅에 도움이 되는 경고가 출력되니 이를 참고해보세요. (Warning all의 준말입니다)

gcc main.c -o main.out -O2 -Wall -lm -static (BOJ의 컴파일 커맨드 참고)

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