cal.stack

转载 2017年01月03日 21:31:28

#define MAX 100

 

struct operand

{

    int data[MAX];

    int top;

};

 

struct operator_ch

{

    int top;

    char data[MAX];

};

 

 

typedef struct operand OPND;

typedef struct operator_ch OPCH;

 

void init_OPND_stack(OPND *stack)

{

stack->top = -1;

}

 

void init_OPCH_stack(OPCH *stack)

{

stack->top = -1;

}

 

void is_empty_OPND(OPND *stack)

{

if(stack->top == -1)

{

return -1;

}

 

return 0;

}

 

void is_empty_OPCH(OPCH *stack)

{

if(stack->top == -1)

{

return -1;

}

 

return 0;

}

 

int get_OPND_top(OPND *stack)

{

if(is_empty_OPND(stack) == -1)

{

return -1;

}

 

return stack->data[stack->top];

}

 

int get_OPCH_top(OPCH *stack)

{

if(is_empty_OPCH(stack) == -1)

{

return -1;

}

 

return stack->data[stack->top];

}

 

int push_OPND(OPND *stack, int num)

{

    stack->data[++(stack->top)] = num;

}

 

int push_OPCH(OPND *stack, char ch)

{

    stack->data[++(stack->top)] = ch;

}

 

int pop_OPND(OPND *stack)

{

if(is_empty_OPND(stack) == -1)

{

return -1;

}

    

int num = stack->data[stack->top];

 

(stack->top)--;

 

return num;

}

 

char pop_OPCH(OPCH *stack)

{

if(is_empty_OPCH(stack) == -1)

{

return -1;

}

    

char ch = stack->data[stack->top];

 

(stack->top)--;

 

return ch;

}

 

int get_priority(char ch)

{

if(ch == '+' || ch == '-')

{

return 1;

}

 

if(ch == '*' || ch == '/')

{

return 2;

}

}

 

int compare_priority(char op_ch, char ch)

{

if(get_priority(op_ch) > get_priority(ch))

{

return 1;

}

return -1;

}

 

int count(int num1, int num2, char ch)

{

    int result;

 

switch(ch)

{

case '+':

{

            result = a + b;

break;

}

 

case '-':

{

result = a - b;

break;

}

case '*':

{

result = a * b;

break;

}

case '-':

{

result = a / b;

break;

}

}

 

return result;

}

 

int main()

{

    char ch;

char op_ch;

 

while((ch = getchar()) != '\n')

{

        if(ch >= '0' && ch <= '9')

{

            push_stack1();

}

 

if(ch == '+' || ch == '-' || ch == '*' || ch == '/')

{

op_ch = pop_stack2();

if(compare(op_ch,ch) > 0)

{

push_stack2(ch);

}

else

{

count(a,b,op_ch);

}

}

}

return 0;

}

相关文章推荐

**KMP算法 Problem A. cal 2016/11/12 字符串 c++

KMP算法 Problem A. cal 2016/11/12 字符串Input file: cal.in Output file: cal.out Time limit: 1s Memor...

Linux中的date、cal、bc三个简单命令

1.date命令:显示日期与时间的命令 (1).在终端输入命令date,可以知道Linux操作系统的当前时间,如下图所示: (2).其中date命令又可以带一些参数,如果我们想让当前的...

骨骼动画系统Cal3D

在群里看到有人把它用在了商业游戏中, 就很好奇为什么用它. 去网站上看了一下, 觉得许多特性很不错, 像动作融合, LOD之类的 试着用DXUT参考miniviewer写了个DEMO, 确实很方便...

CASIO DC-850 DATA-CAL Manual (操作使用方法)

CASIO DC-850 DATA-CAL 电子记事本 网上搜不到完整的使用手册,只有一个设置时间的图片 将用一晚上时间摸索出来的全部功能的使用方法,整理共享

CAL002-MapKit实战

参考博客:http://www.raywenderlich.com/21365/introduction-to-mapkit-in-ios-6-tutorial      MapKit是苹果提供...

在OGRE中使用Cal3D

://blog.csdn.net/kevinlynx/archive/2007/07/19/1698319.aspx   Kevin Lynx 2007-7-17       要将Cal3D这...

CentOS简单命令:date cal bc

简单的shell指令: 1、日期的格式化显示: 2、日历的显示: 3、bc计算器:

Cal-HeatMap(热点图)使用例子

目标编写类似GitHub上的栅格图(热点图)效果图如下:官网用到的js插件Cal-HeatMap,他的GitHub地址。代码引入依赖(cdn方式) <script type="text/jav...

Objective-C实现Mac终端日历程序(cal命令)

当我们在Mac下打开终端,然后输入以下命令:看看会发生什么? (1)cal:输出当年当月的日历; 。 (2)cal 1 2016  :输出指定年份和月份的日历; 。 (3)cal 2015  :...

向优秀的效率类应用学习--智能日历应用(Cal和Sunrise)

Cal是口碑甚佳的Any·Do开发团队在2013年年中发布的智能化日历应用。iOS版Any.do Cal在2013年6月发布,Android版本在12月发布。和Any·Do一样,Any.do Cal仍...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)