数据结构简单计算器c
时间: 2023-11-26 15:48:57 浏览: 29
这个简单计算器使用了栈来实现,可以进行基本的四则运算。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXOP 100
#define NUMBER '0'
int getop(char []);
void push(double);
double pop(void);
int main()
{
int type;
double op2;
char s[MAXOP];
while ((type = getop(s)) != EOF) {
switch (type) {
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() *
相关问题
用c语言数据结构编写:简易计算器
好的,以下是一个简单的用 C 语言数据结构编写的计算器:
```c
#include <stdio.h>
#include <stdlib.h>
struct Stack {
int top;
int capacity;
int* array;
};
// 创建一个栈
struct Stack* createStack(int capacity) {
struct Stack* stack = (struct Stack*) malloc(sizeof(struct Stack));
stack->capacity = capacity;
stack->top = -1;
stack->array = (int*) malloc(stack->capacity * sizeof(int));
return stack;
}
// 判断栈是否为空
int isEmpty(struct Stack* stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isFull(struct Stack* stack) {
return stack->top == stack->capacity - 1;
}
// 入栈操作
void push(struct Stack* stack, int item) {
if (isFull(stack))
return;
stack->array[++stack->top] = item;
}
// 出栈操作
int pop(struct Stack* stack) {
if (isEmpty(stack))
return -1;
return stack->array[stack->top--];
}
// 获取栈顶元素
int peek(struct Stack* stack) {
if (isEmpty(stack))
return -1;
return stack->array[stack->top];
}
// 判断字符是否为操作符
int isOperator(char ch) {
return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}
// 计算表达式
int evaluate(char* expression) {
struct Stack* stack = createStack(strlen(expression));
int i, operand1, operand2;
for (i = 0; expression[i]; i++) {
if (isdigit(expression[i])) {
push(stack, expression[i] - '0');
}
else if (isOperator(expression[i])) {
operand2 = pop(stack);
operand1 = pop(stack);
switch (expression[i]) {
case '+': push(stack, operand1 + operand2); break;
case '-': push(stack, operand1 - operand2); break;
case '*': push(stack, operand1 * operand2); break;
case '/': push(stack, operand1 / operand2); break;
}
}
}
return pop(stack);
}
int main() {
char expression[100];
printf("请输入一个表达式:");
scanf("%s", expression);
int result = evaluate(expression);
printf("计算结果是:%d\n", result);
return 0;
}
```
这个计算器支持四则运算,可以输入包含数字和运算符的表达式,例如 "3+4*2-1",然后计算出结果并输出。
c++数据结构实现计算器
C 数据结构可以用来实现一个简单的计算器。我们可以使用栈来存储操作数和运算符,在遍历输入表达式时,根据运算符的优先级依次进行计算。
首先,我们可以使用一个栈来存储操作数。当遇到一个数字时,我们就将它压入栈中;当遇到一个运算符时,我们就从栈中弹出两个操作数进行运算,并将结果压入栈中。
另外,我们可以使用另一个栈来存储运算符。当我们遇到一个运算符时,我们就将它与栈顶的运算符进行比较,如果栈顶运算符的优先级高于或等于当前运算符,就将栈顶运算符弹出并进行相应的计算,然后将当前运算符压入栈中;否则,就将当前运算符直接压入栈中。
当整个表达式遍历完成后,我们就可以从栈中弹出最终的计算结果。
通过这种方式,我们可以利用 C 数据结构中的栈来实现一个简单的计算器。我们可以支持基本的四则运算,甚至可以考虑添加括号的支持。这种基于栈的计算器实现方式可以帮助我们更好地理解数据结构中栈的应用,同时也可以提高我们对计算器的理解和掌握。