아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
흰사마귀126
흰사마귀12619.04.08

c언어 스택에 대해서 질문 드립니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STACK_SIZE 100
typedef char Element;
Element data[MAX_STACK_SIZE];
int top;

void error( char str[] )
{
printf("%s\n",str);
exit(1);
}

void init_stack() { top= -1;}
int is_empty() { return top == -1; }
int is_full() { return top == MAX_STACK_SIZE-1; }
int size() { return top+1;}

void push ( Element e )
{
if( is_full() )
error("스택 포화 에러");
data[++top] = e;
}

Element pop ()
{
if( is_empty() )
error("스택 공백 에러");
return data[top--];
}

Element peek()
{
if( is_empty() )
error ("스택 공백 에러");
return data[top];
}


이게 일단 스택에서 사용되는 함수 써둔거구요 문자열을 입력받아서 그대로 역으로 출력하고싶은데

분명 배열 형태로 문자를 받아서 push에 넣어 스택에 저장한뒤에 그걸 pop으로 출력해내는 구조인건

머릿속에 그려지는데 뭔가 만드려니까 손이 안잡히네요..

int main()
{
int i;
init_stack();
char a[100];
printf("문자열 입력 >");
scanf("%s", a);
for(i=0;a[i]!='\0';i++)
{
push(a);
}
for(i=0;i<100;i++)
{
printf("%s", pop(a));
}

return 0;
}

도저히 감이 안와서 이렇게 끄적여봤는데 역시나 컴파일이 안되네요 push(a); 이부분이랑

void push ( Element e ) 이 부분에서 오류가 나는거 같은데 어떻게 고쳐야할지 감이 안잡혀요 도와주세요 ㅠㅠ

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 안녕하세요.

    코드를 보니 push에 들어가는 parameter가 Element로 실제로는 char네요. 그러면 이제 push를 호출하는 실제 부분을 보면 a라는 문자열을 받아 for문을 돌리시는데 인자에 a자체의 char*를 넘기셨네요. 아마 코딩 실수 이신거같은데 for문은 돌리셨으니 a[i]로 바꾸시면 될 거 같고 흠 보니 밑에 pop이라는 func에 parameter는 없는데 넣으셔서 거기도 에러네요. 빼주셔야 합니다.