我是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;
}