入栈出栈方式C++代码实现

来源:百度知道 编辑:UC知道 时间:2024/07/02 02:47:39
1,2,3,4顺序入栈,问有多少种出栈方式,并打印结果。
哪位高手能用C++代码实现这个问题啊
我知道有多少出栈方式,可是不知道怎样用C++语言来实现这个操作呢

希望你把答案发到我邮箱里面吧 shipengxin@126.com
不是有14种吗 怎么只有8种啊 1234,1243,1324,1342,1432;2134,2143,2431,2341,2314;3214,3421,3241;4321;不是这14种吗

2楼楼主 感觉你的代码挺简洁的 可是具体那24个循环那不是很懂 能给注释一下吗 谢谢

//最终版:
#include <iostream>
#include <stack>
using namespace std;

bool stack_pop(stack<int> &st, int num, int data[], int &pos)
{
if(num == 0) return true;
if(st.size() < num) return false;
for(int i=0; i<num; ++i)
{
data[pos++] = (int)(st.top());
st.pop();
}
}

int main()
{
int A=0, B=0, C=0, Total=0;
int output[4], pos;
for(A=0; A<2; ++A)
for(B=0; B<3; ++B)
for(C=0; C<4; ++C)
{
pos = 0;
stack<int> st;
st.push(1);
stack_pop(st, A, output, pos);
st.push(2);
if(!stack_pop(st, B, output, pos)) continue;
st.push(3);
if(!stack_pop(st, C, output, pos)) continue;
st.push(4);
stack_pop(st, st.size(), output, pos);
for(int i=0;i<4;++i) cout<<output[i];
cout<<endl;
++Total;
}
cout<<"Total numbers: