第四天学习数据结构,完成一半的逆波兰表达式

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
typedef struct list
{
int * bottom;
int * top;
int data;   //用来存栈内元素个数?


}Stack;


void InitStack(Stack * );
void pushStack(Stack * ,int ); //把e推入栈
int popStack(Stack *  ); //出栈,把值付给e


int main()
{
Stack stack;
InitStack(&stack);
printf("请输入逆波兰表达式,每个值用空格分开,以#作为结束标识\n");
// string str;
char k; //接收输入
int q,w; //用于接收栈内的元素
int d;//用于接收 字符转换数字
char str[10];
int i =0;
int result;
scanf("%c",&k);


while(k !='#')
{
while(isdigit(k)) //判断输入字符是不是数字   用于过滤数字
{
str[i++] = k; //把字符型输入数组  字符一个一个进入数组,123,1先进去while循环
str[i] = '\0'; //字符最后一位\0

scanf("%c",&k);
if(k ==' ')
{
d = atoi(str);
pushStack(&stack , d);
i = 0;  //一定要重新让i= 0,好让str数组记载下一个数值
break;  //一定要退出if循环,否则 一直停留在if里面,不进行下面的操作
}


}
switch(k)
{
case '+':
q = popStack(&stack);
w = popStack(&stack);
pushStack(&stack , (q+w));
break;
case '-':   //减法,后出的 - 先出的
q = popStack(&stack);
w = popStack(&stack);
pushStack(&stack , (w-q));
break;
case '*':
q = popStack(&stack);
w = popStack(&stack);
pushStack(&stack , (q*w));
break;
case '/':
q = popStack(&stack);
w = popStack(&stack);

pushStack(&stack , (w/q));
            break;
}
scanf("%c",&k);   // 这个scanf忘记写了,导致4个小时没找到原因。。。。。
}

result = popStack (&stack);
printf("最终计算结果%d",result);

return 0;
}
void InitStack(Stack * stack)
{
stack->bottom = (int *) malloc(100 * (sizeof(int)));
stack->top = stack->bottom;
stack->data = 0;
printf("栈初始化成功");
}
void pushStack(Stack * stack , int e )
{
*(stack->top) = e;
stack->top = ((stack->top) +1);
(stack->data) ++;
printf("压一次了");
}
int popStack(Stack * stack )
{
int e;
e = *(((stack->top) -1)) ;
stack->top = ((stack->top)-1);
printf("出一次");
return e;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值