栈的压入与弹出序列
何海涛面试题22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<iostream> #include<stack> using namespace std; bool IsPopOrder( int a[], int b[], int n) //压入序列和弹出序列及长度 { bool flag= false ; if (n>0) { int i=0,j=0; stack< int >s; while (j<n) { while (s.empty()||s.top()!=b[j]) //压入a[5]={1,2,3,4,5}直到元素等于b[0],b[5]={4,5,3,2,1}(正确)和{4,3,5,2,1}(错误) { if (i==n) break ; //没找到 s.push(a[i]); i++; } if (s.top()!=b[j]) //下一个出栈的元素不等于栈顶元素 { break ; } s.pop(); //出栈 j++; } if (s.empty()&&j==n) flag= true ; } return flag; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步