백준 10828 c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
int* stack;
int count = 0;
int input(int lower, int upper)
{
//cout << "input()" << endl;
int A;
while (1)
{
scanf("%d", &A);
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void push(int num)
{
stack[count] = num;
count++;
return;
}
void pop()
{
if (count > 0)
{
count--;
printf("%d\n", stack[count]);
stack[count] = NULL;
}
else
{
printf("-1\n");
}
return;
}
void size()
{
printf("%d\n", count);
return;
}
void empty()
{
if (count == 0)
{
printf("1\n");
}
else
{
printf("0\n");
}
return;
}
void top()
{
if (count == 0)
{
printf("-1\n");
}
else
{
printf("%d\n", stack[count - 1]);
}
return;
}
int main(void)
{
int N, i, num;
char temp[10];
N = input(1, 10000);
stack = (int*)malloc(sizeof(int) * N);
for (i = 0; i < N; i++)
{
scanf("%s", temp);
if (strcmp(temp, "push") == 0)
{
scanf("%d", &num);
push(num);
}
else if (strcmp(temp, "pop") == 0)
{
pop();
}
else if (strcmp(temp, "size") == 0)
{
size();
}
else if (strcmp(temp, "empty") == 0)
{
empty();
}
else if (strcmp(temp, "top") == 0)
{
top();
}
else
{
;
}
}
free(stack);
return 0;
}