这周遇到此题,做个小结。
解题步骤
1、凝练题目
1~n进入A,判断输入序列是否满足出栈规则
2、解决方案
添加C栈,将输入编号逐个与A中元素比较;若相同,出栈,不相同,将编号压入C栈;出站车厢数等于输入车厢数量火车出站成功,否则失败
3、代码实现
#include<stdio.h>
#define MAX 999
int main()
{
int n,i,j,k,top,A[MAX],B[MAX],C[MAX];
printf("请输入车厢数:\n");
scanf("%d",&n);
printf("请输入出站车厢编号:\n");//判断车厢序列
for(i=0;i<n;i++){
scanf("%d,",&B[i]);
}
for(i=0;i<n;i++){ //初始化
A[i]=i+1;
}
top=0;
k=0;
j=0;
i=0;
C[top++]=A[0];//栈顶元素初始化
while(k!=n){
if(i==n){ //车厢遍历完结束
break;
}
if(C[top-1]!=B[j]){ //栈顶元素不等于测试元素 入栈
i++;
C[top++]=A[i];
}else{ //等于测试元素,栈顶元素出栈&#x