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

typedef int element;
typedef struct StackNode {
 element item;
 struct StackNode *link;
}StackNode;

typedef struct {
 StackNode *top;
} LinkedStackType;

void init(LinkedStackType *s)
{
 s->top = NULL;
}

int is_empty(LinkedStackType *s)
{
 return (s->top == NULL);
}

void push(LinkedStackType *s, element item)
{
 StackNode *temp = (StackNode *)malloc(sizeof(StackNode));
 if(temp == NULL)
 {
  fprintf(stderr, "메모리 할당 오류\n");
  return;
 }
 else
 {
  temp->item = item;
  temp->link = s->top;
  s->top = temp;
 }
}

element pop(LinkedStackType *s)
{
 if(is_empty(s))
 {
  fprintf(stderr, "스택이 비어있음\n");
  exit(1);
 }
 else
 {
  StackNode *temp = s->top;
  element item = temp->item;
  s->top = s->top->link;
  free(temp);
  return item;
 }
}

element peek(LinkedStackType *s)
{
 if(is_empty(s))
 {
  fprintf(stderr, "스택이 비어있음\n");
  exit(1);
 }
 else
 {
  return s->top->item;
 }
}

int main(void)
{
 int a,i;
 LinkedStackType s;
 StackNode *b = NULL;
 init(&s);

 while(1)
 {
  printf("입력: ");
  scanf("%d", &a);

  if(a == -1)
  {
   printf("출력: %d\n", pop(&s));
  }

  else if(a > 0)
  {
   if(is_empty(&s) !=0)
   {
    push(&s, a);
   }
   if(is_empty(&s) ==0)
   {
    if(peek(&s) >= a)//아래에 있는 것 보다 입력받는 수가 작아야한다.
     push(&s, a);
    else
     printf("Error!\n");
   }
  }
  else if(a == 0)
  {
  }
 }
}


스택으로 탑쌓기 프로그램을 만들었어

메인에서 변수 a가 내가 쌓을 벽돌의 사이즈야.

위에 쌓이는 벽돌의 사이즈가 이미 쌓여있는 벽돌의 사이즈보다 크면 쌓을 수 없어.

문제는 a가 0을 입력받으면 스택의 모든 내용을 띄어야되는데.. 그걸 어떻게할지 모르겠어ㅠㅠ

도와줘 갤러들아