为RPN计算器创建堆栈

时间:2019-12-14 19:12:14

标签: c stack

我是c-starter。我为RPN计算器创建堆栈时遇到问题。我想用malloc初始化它。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> 


typedef struct _stack stack;
typedef struct _stack_element stack_element;

struct _stack
{
    stack_element *top;
};

struct _stack_element
{
    stack_element *next;
    float value;
};

这就是我称为“创建堆栈”功能的方式:

stack *astack = stack_create();

这是堆栈的创建:

stack *stack_create()
{
    stack *Stack = (stack*)malloc (sizeof(struct _stack));
    return Stack;
}

我尝试过的所有操作均以分段错误结尾,此时我不知道如何解决该问题。

编辑: 我在哪里使用堆栈:

process(astack, string);

字符串是我的输入。

void process(stack *astack, char *string)
{
if (token[0] == '+')
    {
        stack_push(astack, stack_pop(astack) + stack_pop(astack));
        return;
    }
... all the other cases ...
}
float stack_pop(stack *astack)
{
    float value = astack->top->value;
    astack->top = astack->top->next;
    return value;
}
void stack_push(stack *astack, float value)
{
    astack->top->value = value;
    astack->top->next = astack->top;
}

0 个答案:

没有答案