shdmftksid   5년 전

디버깅을 아무리 해봐도 논리상 문제를 못찾고 있어서요..

늘 저지르는 실수 같은 기분이(?)들지만 혹시 채점기가 visual 컴파일러와 다를까 싶어서

여쭙고자 글 올립니다.

처음에는 스택 구조체를 따로 선언해서 해서 실행시간 문제인가 싶었는데, 그것도 아닌거 같구요..(time.h로 체크 해봤거든요)

아래 표기 소스 외에 밑에는 처음에 돌려본 구조체 선언해서 만든 스택입니다.

둘 다 비쥬얼에서만 작동은 되네요... 

의견 감사드립니다.


// 아래 소스는 비쥬얼로 보셔야 잘보여요.. 그냥 '소스 코드'의 항목만 봐주셔도 감사합니다 ㅠㅠ

#include #include typedef struct _STACK_ { int stk[10001]; int size; int *top; } STACK; void initStack(STACK *stk) { stk->size = 0; stk->top = NULL; } void push(STACK *stk, int v) { stk->stk[stk->size] = v; stk->top = &(stk->stk[stk->size]); stk->size += 1; } int pop(STACK *stk) { int temp; if (stk->top != NULL) { temp = stk->stk[stk->size - 1]; stk->stk[stk->size - 1] = 0; stk->size--; if (stk->size == 0) stk->top = NULL; else stk->top = &(stk->stk[stk->size]); return temp; } else return -1; } int empty(STACK *stk) { if (stk->size == 0) return 1; else return 0; } int top(STACK *stk) { int temp; if (stk->top == NULL) return -1; else { temp = *(stk->top); return temp; } } main() { int comN, i, data; STACK stk; char comM[6]; scanf("%d", &comN); initStack(&stk); for (i = 0; i < comN; i++) { getchar(); memset(comM, 0, sizeof(comM)); scanf("%[^' '\n]s", comM); if (strcmp(comM, "push") == 0) { scanf("%d", &data); push(&stk, data); } else if (strcmp(comM, "pop") == 0) printf("%d\n", pop(&stk)); else if (strcmp(comM, "top") == 0) printf("%d\n", top(&stk)); else if (strcmp(comM, "size") == 0) printf("%d\n", stk.size); else if (strcmp(comM, "empty") == 0) printf("%d\n", empty(&stk)); else printf("error!\n"); } }

djm03178   5년 전

top이 틀렸습니다. 문제를 다시 잘 읽어보세요.

shdmftksid   5년 전

djm03178님 감사합니다.

혹시 struct로 선언했던 코드도 한 번 봐주실 수 있나요...?

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