题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
/**
- 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
- @param pushV int整型一维数组
- @param pushVLen int pushV数组长度
- @param popV int整型一维数组
- @param popVLen int popV数组长度
- @return bool布尔型
- C语言声明定义全局变量请加上static,防止重复定义
- C语言声明定义全局变量请加上static,防止重复定义 */
#include<stdbool.h>
bool IsPopOrder(int* pushV, int pushVLen, int* popV, int popVLen ) {
// write code here
int i=0;
int push_count=-1;
int pop_count=0;
int val;
int *stack = (int*)malloc(pushVLen*1001*sizeof(int));
for(i=0;i<pushVLen;i++)
{
push_count++;
*(stack + push_count) = *(pushV+i);
//判断当前栈顶 和popV 这个是不是相等&&以防一直在这个while循环里,导致pop_count大于popVLen&&push_count<0
while(*(stack + push_count)==*(popV+pop_count)&&pop_count<popVLen&&push_count>=0)
{
val = *(stack + push_count);
printf("%d",val);
push_count--;
pop_count++;
}
}
if(pop_count ==popVLen )
return true;
else
return false;
return false;
}