linux 函数参数压栈顺序 apue,九度 1366 栈的压入弹出序列

样例输出:

Yes

No

#include

#include

#include

#include

using namespace std;

bool isPopOrder(const vector &push, const vector &pop, int length)

{

bool sequence = false;

if(push.empty() || pop.empty() || length < 0)

return sequence;

vector::const_iterator iNextPush = push.begin();

vector::const_iterator iNextPop = pop.begin();

stack stack;

while(iNextPop - pop.begin() < length)

{

while(stack.empty() || stack.top() != *iNextPop)

{

if(iNextPush - push.begin() == length)

break;

stack.push(*iNextPush);

++iNextPush;

}

if(stack.top() != *iNextPop)

break;

stack.pop();

++iNextPop;

}

if(stack.empty() && iNextPop - pop.begin() == length)//这是if 不是while

sequence = true;

return sequence;

}

int main(int argc, char *argv[])

{

int n;

while(scanf("%d", &n) != EOF)

{

int value;

vector push, pop;

int i;

for(i = 0; i < n; ++i)

{

scanf("%d", &value);

push.push_back(value);

}

for(i = 0; i < n; ++i)

{

scanf("%d", &value);

pop.push_back(value);

}

if(isPopOrder(push, pop, n))

printf("Yes\n");

else

printf("No\n");

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值