스택 사용해서 문자열 반대로 출력
#include <stdio.h> #define max 20 typedef struct { int stack[max]; int top; }stack_type; typedef stack_type* stack_type_ptr; stack_type st; void init(stack_type_ptr st) { st->top = -1; } int is_empty(stack_type st) { if (st.top == -1) return 1; else return 0; } int is_full(stack_type st) { if (st.top == max - 1) return 1; else return 0; } void push(stack_type_ptr st, int item) { if (!is_full(*st)) { st->top++; st->stack[st->top] = item; } else printf("스택이 전부 차 있음!!"); } int pop(stack_type_ptr st) { if (!is_empty(*st)) { char tmp = st->stack[st->top]; st->top--; return tmp; } } char get_symbol(char s[]) { static int i = -1; i++; return s[i]; } char reverse(char s[]) { char alpha = "0"; char tmp = 0; while (alpha != NULL) { alpha = get_symbol(s); push(&st, alpha); if (alpha == NULL) pop(&st); } while (!is_empty(st)) { tmp = pop(&st); printf("%c", tmp); } } int main() { char s[] = "abcdefg"; reverse(s); }