内容:设车辆厂生产了硬座车厢和软座车厢共n节(混合在一起),要求用顺序栈的5种运算使所有的硬座车厢排列到软座车厢的前面。
程序如下:
#include
#define elemtype char
const int maxlen=20;
struct seqstack
{
elemtype stack[maxlen];
int top;
};
void inistack(seqstack &s)
{
s.top=0;
}
void push(seqstack &s,elemtype x)
{
if (s.top==maxlen-1)printf("overflow\n");
else
{
s.top++;
s.stack[s.top]=x;
}
}
void pop(seqstack&s)
{
if(s.top==0)printf("underflow\n");
else
{
s.top--;
}
}
elemtype gettop(seqstack s)
{
if (s.top==0){printf("underflow\n");return 0;}
else return s.stack[s.top];
}
int empty(seqstack s)
{
if (s.top==0) return 1;
else return 0;
}
void prtstack(seqstack &s)
{
int i;
for (i=1;i<=s.top;i++){
printf("&d",s.stack[i]);
}
}
void main(void)
{
int n,i;
elemtype x;
seqstack s_H;
seqstack s_S;
inistack(s_H);
inistack(s_S);
printf("请输入车厢数\n");
scanf("%d",&n);
printf("请输入%d节车厢代号(H代表硬座车厢,S代表软座车厢)\n",n);
if(n>maxlen)
{
printf("车厢数目太多\n");
return;
}
for (i=1;i<=n;i++)
{
scanf ("%d",&x);
if(x=='H')
push(s_H,x);
else if(x=='S')
push(s_S,x);
}
prtstack(s_H);
prtstack(s_S);
return ;
}
程序可以正常运行,可是输入完车厢数和车厢代号后就会自动跳出,求大神解答