|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//代码如下,问题在代码里有描述
#include <stdio.h>
#include <stdlib.h>
#define max_size 100
typedef struct
{
char a[max_size];
int top;
}wang,*WANG; //栈的数据结构定义
void initwang(WANG L)
{
L->top=-1; //栈的初始化
}
void Cruzhan(WANG L,char ch)
{
if(L->top>max_size-1)
{
printf("超出范围.\n"); //入栈函数
exit(-1);
}
L->top++;
L->a[L->top]=ch;
}
void Cchuzhan(WANG L)
{
if(L->top==-1)
{
printf("空栈.\n"); //出栈函数
exit(-1);
}
L->top--;
}
char Cshow(WANG L)
{
char x;
if(L->top==-1)
{
printf("空栈,无法显示元素.\n");
exit(-1); //显示栈顶元素函数
}
x=L->a[L->top];
return x;
}
int main()
{
WANG L1;
char ch[30];
char k3;
int i=0;
int k1,k2;
L1=(WANG)malloc(sizeof(wang));
// L2=(WANG)malloc(sizeof(wang));
initwang(L1);
// initwang(L2);
printf("请输入字符串:");
scanf("%s",ch);
while(ch[i]!='\0')
{
switch(ch[i])
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
{
Cruzhan(L1,ch[i]);
}
break;
case '+':
case '*':
{
if(ch[i]=='+')
{
k1=(int)Cshow(L1); //问题如下,我想将字符型的1和2先强制转化为整形,之后把他们相加,然后再转化为字符型入栈,但是好像不行。。。希望能给个别的思路,根据我这个代码最后输出的是空的。
Cchuzhan(L1);
k2=(int)Cshow(L1);
Cchuzhan(L1);
k3=(char)(k1+k2);
Cruzhan(L1,k3);
}
if(ch[i]=='*')
{
k1=(int)Cshow(L1);
Cchuzhan(L1);
k2=(int)Cshow(L1);
Cchuzhan(L1);
k3=(char)(k2*k1);
Cruzhan(L1,k3);
}
/*if(L1->top==0)
{
printf("最终结果为:");
printf("%c \n",L1->a[0]);
}*/
}
break;
}
i++;
}
printf("最终结果为:");
printf("%c \n",L1->a[0]);
} |
|