오늘 수업시간에 스택에 대해 처음 배웠는데,
스택에 char타입 데이터 넣고 스택에 있는 데이터 전부 출력하는 코드입니다. (push, print)
출력 결과물이 Cats 가 되어야 맞는데, ????요런 식으로 출력이 되는데
어느 부분을 어떻게 수정해야 할지 모르겠습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef char element;
typedef struct
{
element data[N];
int top;
} StackType;
void init(StackType* a)
{
a->top = -1;
}
int isEmpty(StackType* a)
{
return a->top == -1;
}
int isFull(StackType* a)
{
return a->top == N;
}
void push(StackType* a, element e)
{
if (isFull(a))
printf("Overflow");
else
{
a->top += 1;
a->data[a->top] = e;
}
}
element pop(StackType* a)
{
if (isEmpty(a))
{
printf("Empty");
return -1;
}
element e = a->data[a->top];
a->top--;
return e;
}
element peek(StackType* a)
{
if (isEmpty(a))
{
printf("Empty\n");
return -1;
}
return a->data[a->top];
}
void print(StackType* a)
{
for (int i = 0; i <= a->top; i++)
{
char ch = a->data[i];
printf("%c ", a->data[i]);
}
}
int main(void)
{
StackType a;
init(&a);
push(&a, "C");
push(&a, "a");
push(&a, "a");
push(&a, "d");
print(&a);
return 0;
}
element 타입을 int로 설정하고 int값 넣은 후 출력은 정상적으로 작동하는데, char에서만 깨지네요
글씀
ㄱㄷ