网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

逆波兰计算器的完整C代码怎么写

这篇文章给大家介绍逆波兰计算器的完整C代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的河东网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

/* 逆波兰计算器 */

#include
#include
#include
#include

typedef double Elemtype;

typedef struct StackNode {
	Elemtype data;
	struct StackNode *next;
}StackNode, *pStackNode;

typedef struct LinkStack {
	pStackNode top;
	int count;
}LinkStack, *pLinkStack;

//链栈创建和初始化
pLinkStack InitStack ( void )
{
	pLinkStack s = (pLinkStack)malloc(sizeof(LinkStack));
	s -> top = NULL;
	s -> count = 0;
	return s;
}

//链栈是否为空
int StackEmpty( pLinkStack s )
{
	return (s -> top == NULL ? 1 : 0 );
}

//链栈入栈
void Push( pLinkStack s, Elemtype e )
{
	pStackNode p = (pStackNode)malloc(sizeof(StackNode));
	p -> data = e;
	
	if( s -> top != NULL )  
		p -> next = s -> top;
	s -> top = p;
	s -> count++;
}

//链栈出栈
Elemtype Pop( pLinkStack s )
{
	Elemtype temp;
	pStackNode p;
	if( StackEmpty(s) )
		exit(0);

	temp = s -> top -> data;
	p = s -> top;
	s->top = s->top->next;
	free(p);
	s->count--;
	return temp;
}

int main()
{
	char c;
	Elemtype temp1, temp2;
	char str[20];
	int i=0;
	pLinkStack s = InitStack();
	printf("请输入表达式 :\n");
	
	scanf("%c", &c);
	while( c != '\n' ) {

		while( isdigit(c) || c=='.' ) {//过滤数字
			str[i++] = c;
			str[i] = '\0';
			if( i>=20 )
				printf("出错: 输入的数据过大!\n");
			scanf("%c", &c);
			if( c == ' ' ) {
				Push( s, atof(str));
				i = 0;
				break;
			}
		}

		switch( c ) {
		case '+':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 + temp1 );
			break;
			
		case '-':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 - temp1);
			break;

		case '*':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 * temp1);
			break;

		case '/':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 / temp1);
			break;
		default:
			break;
		}
		scanf("%c", &c);
	}

	printf("结果为: %f\n", Pop(s));

	return 0;
}

关于逆波兰计算器的完整C代码怎么写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前文章:逆波兰计算器的完整C代码怎么写
URL地址:http://bjjierui.cn/article/pghioj.html

其他资讯