/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pushV int整型一维数组 * @param pushVLen int pushV数组长度 * @param popV int整型一维数组 * @param popVLen int popV数组长度 * @return bool布尔型 */ typedef struct a{ int a[1000]; int *top; int *bottom; }type; bool IsPopOrder(int* pushV, int pushVLen, int* popV, int popVLen ) { // write code here if(pushVLen==0||popVLen==0)return false; type arr={{0},NULL,NULL}; int i=0,j=0,k=pushVLen; arr.a[0]=pushV[j]; arr.bottom=arr.a; arr.top=arr.a; pushVLen--; while(k){ if(i==popVLen)break; if(arr.top!=NULL&&*(arr.top)==popV[i]){//退栈 i++; if(arr.top!=arr.bottom){ arr.top--; }else{ arr.top=arr.bottom=NULL; } }else{//入栈 k--; if(pushVLen==0)continue; if(arr.top!=NULL){ arr.top++; *(arr.top)=pushV[++j]; }else{ arr.a[0]=pushV[++j]; arr.bottom=arr.a; arr.top=arr.a; } pushVLen--; } } if(arr.top==NULL)return true; return false; }