有大神帮忙把C++改成C吗?感谢
#include<iostream>using namespace std;
typedef int SElemType;
typedef struct { //建立顺序栈存储结构
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
int init(Sqstack &s,int maxsize) //初始化
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
}
int push(Sqstack &s,int e) //入栈
{
if(s.top-s.base==s.stacksize)return 0;
else{*s.top=e;
s.top++;}
return 0;
}
int pop(Sqstack &s) //出栈
{
int e;
if(s.top==s.base){return 0;}
else{e=*--s.top;}
return e;
}
int length(Sqstack &L) //求栈长
{
SElemType *p;
p=L.base;
for(int i=0;p!=L.top;i++)
{p++;}
return i;
}
int showout(Sqstack L) //显示栈内所有元素
{
if(L.top==L.base)
{cout<<"货架已空"<<endl;
return 0;
}
SElemType *p;
for(p=L.base;p!=L.top;p++)
cout<<"商品"<<*p<<endl;
return 0;
}
int a,b,c; //定义几个全局变量
int select(Sqstack &Q,Sqstack &S,Sqstack &D);
inital(Sqstack &Q,Sqstack &S,Sqstack &D) //开始函数,建立货架,并存放商品
{
cout<<"请确定货架大小"<<endl;
cin>>a;
init(Q,a+1); //货架
init(S,a+1); //辅助货架
init(D,a+1); //记录营业情况
cout<<"货架已经建立,请输入商品编号,生产日期早的编号小,先输入"<<endl;
c=1; //初始化c,使每次输入都有效
for(int i=1;i<=a;i++)
{
cin>>b;
if(b<c){cout<<"编号不合法";inital(Q,S,D);}
push(S,b); //入辅助栈
c=b;
}
for(i=1;i<=a;i++)
{int d;
d=pop(S);
push(Q,d);
}
cout<<"货架已经放满,可以开始营业"<<endl;
return 0;
}
int sell(Sqstack &Q,Sqstack &S,Sqstack &D) //出售商品
{
if(Q.base==Q.top){cout<<"商品已经售空"<<endl;}
int f=pop(Q);
push(D,f);
cout<<"商品"<<f<<"已经售出"<<endl;
select(Q,S,D);
return 0;
}
int selectstate(Sqstack &Q,Sqstack &S,Sqstack &D)
//查询营业情况
{
cout<<"已经售出的商品"<<length(D)<<endl;
cout<<"还有"<<length(Q)<<"件商品可以出售"<<endl;
select(Q,S,D);
return 0;
}
int getother(Sqstack &Q, Sqstack &S, Sqstack &D )
//结束营业,并进货
{
cout<<"营业时间"<<endl;
if (D.top==D.base){cout<<"无需进货"<<endl;select(Q,S,D);}
else cout<<"无需进货"<<length(D)<<"件"<<endl;
for(int i=1;i<=a-length(D);i++) //倒货到辅助栈
{
int j=pop(Q);
push (S,j);
}
cout<<"请输入商品编号"<<endl;
for(i=1;i<=length(D);i++) //新商品入辅助栈
{
cin>>b;
if(b<c){cout<<"编号有误"<<endl;getother(Q,S,D);}
push(S,b);
c=b;
}
for(i=1;i<<=a;i++) //商品导入货架
{
int k=pop(S);
push(Q,k);
}
D.top=D.base; //初始化辅助栈
cout<<"进货完成,可以开始营业"<<endl;
select(Q,S,D);
return 0;
}
int select(Sqstack &Q,Sqstack &S,Sqstack &D) //功能旋转
{
cout<<"----------------请选择操作----------------"<<endl;
cout<<"1.出售商品 2.查看营业情况"<<endl;
cout<<"3.查看货架商品 2.结束营业并进货"<<endl;
cout<<"5.退出程序"<<endl;
int n;cin>>n;
if(n==1)sell(Q,S,D);
else if(n==2)selectstate(Q,S,D);
else if(n==3){showout(Q);select(Q,S,D);}
else if(n==4)getother(Q,S,D);
else if(n==5)exit(1);
else {cout<<"没有这个操作"<<endl;select(Q,S,D);}
return 0;
}
int main()
{
Sqstack Q,S,D; //定义三个栈
inital(Q,S,D);
select(Q,S,D);
return 0;
}