C++ - Stack Queue
#include <iostream>
using namespace std;
#define QStackLimit 5
int queueStack[QStackLimit]={0};
int top=0;
bool pop(); // 현재 상태를 하나씩 보여줌
bool s_push(int); // 스택
bool q_push(int); // 큐
int main(void)
{
s_push(610); s_push(620); s_push(630);
s_push(650); s_push(660); s_push(640);
pop();pop();pop();pop();pop();pop();
q_push(10); q_push(20); q_push(30); q_push(40);
q_push(50); q_push(60); q_push(70); q_push(80);
pop();pop();pop();pop();pop();pop();
return 0;
}
bool s_push(int val) // 스택 쌓기
{
if(top>=QStackLimit){
cout<<"Stack full"<<endl;
return 1;
}else{
queueStack[top++]=val;
}
return 0;
}
bool q_push(int val) // 큐로 밀기
{
if(top>=QStackLimit){
cout<<"Stack full"<<endl;
return 1;
}else{
// 큐전체를 뒤로 한칸씩 밀어준다
for(int i=top-1; i>-1; i--)
{
queueStack[i+1]=queueStack[i];
}
queueStack[0]=val;
top++;
}
return 0;
}
bool pop() // 현재 상태를 하나씩 보여줌
{
if(top>0){
cout<<queueStack[--top]<<endl;
}else{
cout<<"Stack empty"<<endl;
return 1;
}
return 0;
}