C语言 栈的应用 计算简单的中缀表达式

C语言实现中缀表达式计算:双栈法
本文展示了一段C语言代码,用于计算简单的中缀表达式,特别是处理一位正整数的四则运算及括号。代码使用一个结构体实现两个栈,分别存储数字和运算符,通过标志区分操作。解析过程中,遇到数字直接压栈,遇到括号则进行运算,同时考虑了运算符的优先级。在处理完字符串后,还需额外处理栈中剩余的数据。

代码简介:

下面的代码实现了计算简单的中缀表达式:只可以处理一位正整数的四则运算及括号。是栈的简单应用,要实现中缀表达式运算需要用两个栈,一个存储数字的栈和一个存储运算符的栈,因为懒得写两遍不同的栈上的操作,所以就用一个结构体实现了两个栈,用标志1表示操作其内部的栈1(int栈),标志2表示操作栈2(char栈),具体思路见代码。

完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100

typedef struct node *ptrNode;
typedef struct node
{
    int top1;
    int data1[MAXSIZE];

    int top2;
    char data2[MAXSIZE];
}stackNode;
typedef ptrNode stack_;

int empty_(stack_ st,int d)
{
    if(d==1 && st->top1 == -1)return 1;
    else if(d==2 && st->top2 == -1)return 1;
    return 0;
}
int full_(stack_ st,int d)
{
    if(d==1 && st->top1 == MAXSIZE-1)return 1;
    else if(d==2 && st->top2 == MAXSIZE-1)return 1;
    return 0;

}
void pop_(stack_ st,int d)
{
    if(d==1)
        st->top1--;
    else if(d==2)
        st->top2--;
}

void push_(stack_ st,int d,int data1,char data2)
{
    if(d==1)
        st->data1[++st->top1]=data1;
    else if(d==2)
        st->data2[++st->top2]=data2;
}
//显示栈顶
int top_num(stack_ st)
{
    return st->data1[st->top1];
}
char top_chr(stack_ st)
{
    return st->data2[st->top2];
}

stack_
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值