?? 棧的存儲.txt
字號:
#include"math.h"
#include"stdio.h"
#include"stdlib.h"
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
char gettop1(sqstack s)
{
char e;
if(s.top==s.base)
;
else
e=*(s.top-1);
return(e);
}
int gettop2(sqstack s)
{
int e;
if(s.top==s.base)
return(0);
e=*(s.top-1);
return (e);
}
sqstack push1(sqstack l,char c)
{
sqstack q=l;
*l.top++=c;
return(q);
}
sqstack push2(sqstack l,int e)
{
sqstack q=l;
*l.top++=e;
return(q);
}
char pop1(sqstack l)
{
char c;
if(l.top==l.base)
return(0);
else c=*--l.top;
return(c);
}
int pop2(sqstack l)
{
int e;
if(l.top==l.base)
return(0);
else e=*--l.top;
return(e);
}
char precede(char c1,char c2)
{
char c;
if(c2=='+'||c2=='-')
c='<';
else if(c2=='*'||c2=='/')
c='>';
else if(c1==c2)
c='=';
return(c);
}
int operate(int a,char c,int b)
{int e;
if(c=='+')
e=a+b;
else if(c=='-')
e=a-b;
else if(c=='*')
e=a*b;
else if(c=='/')
e=a/b;
return(e);
}
main()
{
sqstack l1,l2;
int p,a,b,m,n;
char c;
printf("please input m,n.");
scanf("%d,%d",&m,&n);
l1.base=l1.top=(int*)malloc(m*sizeof(int));
l2.base=l2.top=(int*)malloc(n*sizeof(int));
l1.stacksize=m;
l2.stacksize=n;
push1(l1,'#');
c=getchar();getchar();
while(c!='#'||gettop1(l1)!='#')
{
if(!(c=='+'||c=='-'||c=='*'||c=='/'))
{
push2(l2,c);
printf("input another c");
c=getchar();getchar();
}
else
switch(precede(gettop1(l1),c))
{
case '<':
push1(l1,c);
c=getchar();getchar();
break;
case '=':
pop1(l1);
c=getchar();getchar();
break;
case '>':
c=pop1(l1);
b=pop2(l2);a=pop2(l2);
push2(l2,operate(a,c,b));
break;
}
}
p=gettop2(l2);
printf("%d",p);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -