Data Structure – Reverse String by stack

스택 사용해서 문자열 반대로 출력

#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);
}

Leave a Reply

Your email address will not be published. Required fields are marked *