/** 스택 stack
push, pop
top : 마지막 데이터의 위치
스택이 비어있다 : top==-1
int a, b=5;
a=++b; a=6 b=6
a=b++; a=5 b=6
#include <stdio.h>
int stack[500]={};
int top=-1;
void push(int data){
top++;
stack[top]=data;
}
int pop(){
// is empty?
if(top==-1) return -10;
return stack[top--];
}
int peek(){
return stack[top];
}
int main()
{
push(5);
push(6);
printf("%d",pop());
//stack의 모든 원소 pop
while(top!=-1){
printf("%d ",pop());
//sum+=pop();
}
return 0;
}
#include<stdio.h>
char stack[201]={};
int i,j,k,n,m,top=-1;
int pop()
{
if (top != -1)
{
return stack[top--];
}
}
int main()
{
char str[201]={};
scanf("%d %s", &n, str);
for (i = n-1 ; i >= 0 ; i --)
{
top++;
stack[top] = str[i];
}
while (top!=-1)
{
printf("%c",pop());
if((top - 2) % 3 == 0 && top > 0){
printf(",");
}
}
return 0;
}
#include<stdio.h>
int stack[100001]={},top=-1;
int pop()
{
if (top != -1)
{
return top--;
}
}
void push(int data)
{
top++;
stack[top] = data;
}
int main()
{
int i,j,k,n,m,sum=0;
scanf("%d", &n);
for (i = 0 ; i <n ; i ++)
{
scanf("%d",&m);
if (m == 0)
{
pop();
}
else
{
push(m);
}
}
while (top != -1)
{
sum += stack[top--];
}
printf("%d", sum);
return 0;
}
#include<stdio.h>
int i,j,k=0,n,m,a=-1;
int stack[1001]={};
char str[50]={};
void push(int data)
{
a++;
stack[a] = data;
}
int top()
{
if (a == -1)
{
return -1;
}
return stack[a];
}
void pop()
{
if (a == -1)
{
return ;
}
else
{
a--;
}
}
int empty()
{
if (a == -1)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
scanf("%d\n", &n);
for (i = 0 ; i < n ; i ++)
{
gets(str);
if (str[0] == 's') //size
{
printf("%d\n", a + 1);
}
else if (str[1] == 'u') //push
{
m=0;
for(int j=6;str[j]!=' ';j++){
m=m*10+(str[j]-48);
}
push(m);
}
else if (str[0] == 't') //top
{
printf("%d\n",top());
}
else if (str[0] == 'p' && str[1] == 'o') //pop
{
pop();
}
else if (str[0] == 'e') //empty
{
k = empty();
if (k == 1)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
}
}
/**
7
push( 512 )
top()
push( 70 )
push( 33333 )
top()
pop()
size()
**/
#include<stdio.h>
int i,j,k,n,m,top=-1,a,b;
int stack[201]={};
void push(int data)
{
if (top != -1)
{
top++;
stack[top] = data;
}
}
int pop()
{
if (top != 0)
{
return stack[top--];
}
}
int main()
{
char str[201]={};
gets(str);
for (i = 1 ; str[i] != NULL ; i ++)
{
if (str[i] == '*')
{
a = pop();
b = pop();
push(a*b);
}
else if (str[i] == '+')
{
a = pop();
b = pop();
push(a + b);
}
else if (str[i] == '-')
{
a = pop();
b = pop();
push(a - b);
}
else
{
m = 0;
for(j = i;str[j]!=' ';j++, i ++)
{
m = m * 10 + (str[j] - 48);
}
push(m);
}
}
printf("%d", stack[0]);
return 0;
}