数据结构学习——堆栈习题——表达式的处理(仅限于四则运算可带括号)

这篇博客主要探讨了如何处理包含四则运算和括号的数学表达式,通过堆栈来计算表达式的结果。提供的代码展示了实现这一功能的过程,尽管作者认为这段代码较为简单。
摘要由CSDN通过智能技术生成

四则运算表达式的处理,并计算出结果。

代码如下

权当练习吧。

反正有点水。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct SNode* Stack;
typedef struct element
{
    double number;
    char sign;
} ElementType;
ElementType ERROR;
typedef struct SNode
{
    ElementType data;
    Stack next;
};
Stack CreatStack()//创建一个空链表,并且返回头结点
{
    Stack S;
    S=(Stack)malloc(sizeof(struct SNode));
    S->next=NULL;
    return S;
}
int isEmpty(Stack S)//探测栈是否是空,若为空则返回1,反之返回0
{
    return (S->next==NULL);
}
void Push(ElementType item,Stack S)//填装栈
{
    Stack tempCell;
    tempCell=(Stack)malloc(sizeof(struct SNode));
    tempCell->data=item;
    tempCell->next=S->next;
    S->next=tempCell;
    return S;
}
ElementType Pop(Stack S)//释放栈顶元素
{
    Stack ptr;
    ElementType topElm;
    if(isEmpty(S))
    {
        printf("ERROR!\nThis Stack is empty\n!");
        ERROR.sign=-255;
        return ERROR;
    }
    else
    {
        ptr=S->next;
        S->next=ptr->next;
        topElm=ptr->data;
        free(ptr);
        return topElm;
    }
}
void Destroy(Stack S)//销毁一个栈
{
    while(!isEmpty(S))
    {
        Pop(S);
    }
    free(S);
}
St
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值