千家信息网

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

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家介绍逆波兰计算器的完整C代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。/* 逆波兰计算器 */#include#include#include#inclu
千家信息网最后更新 2025年01月31日逆波兰计算器的完整C代码怎么写

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

/* 逆波兰计算器 */#include#include#include#includetypedef 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代码怎么写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0