嘿,我正在尝试使用反射从下至上打印“堆栈”。代码中的所有内容均应正确无误,只应修改打印功能。我没有任何递归打印,但是不幸的是我不知道为什么。
struct element{
int i;
element *next;
};
struct stack{
element *top;
};
void print(stack *st);
int main(){
element *e5 = (element*) malloc(sizeof(element));
element *e4 = (element*) malloc(sizeof(element));
element *e3 = (element*) malloc(sizeof(element));
element *e2 = (element*) malloc(sizeof(element));
element *e1 = (element*) malloc(sizeof(element));
e5->i = 5; e5->next = NULL;
e4->i = 4; e4->next = e5;
e3->i = 3; e3->next = e4;
e2->i = 2; e2->next = e3;
e1->i = 1; e1->next = e2;
stack start;
start.top = e1;
element *e;
print(&start);
return 0;
}
void print(stack *st){
stack nxt;
nxt.top = st->top->next;
if (st->top != NULL){
print(&nxt);
printf("%i\n", st->top);
}
else
printf("%i\n", st->top->i);
}
谢谢您的输入!
答案 0 :(得分:0)
在其他情况下,您可能在此行崩溃:
printf("%i\n", st->top->i); //<-- possible crash here
您应该更加清楚从程序中看到的错误。
在我看来,这将在打印任何内容之前使程序崩溃。
答案 1 :(得分:0)
还有其他问题(请参阅Botje的评论),但是:
printf("%i\n", st->top);
st->top
是什么类型?如果以%i
格式打印,会发生什么情况?