代码简介:
下面的代码实现了计算简单的中缀表达式:只可以处理一位正整数的四则运算及括号。是栈的简单应用,要实现中缀表达式运算需要用两个栈,一个存储数字的栈和一个存储运算符的栈,因为懒得写两遍不同的栈上的操作,所以就用一个结构体实现了两个栈,用标志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_
C语言实现中缀表达式计算:双栈法

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

被折叠的 条评论
为什么被折叠?



