c - C/C++ 使用递归从下到上打印堆栈
问题描述
嘿,我正在尝试使用 recusion 从下到上打印“堆栈”。代码中的一切都是应该的,只有打印功能应该被修改。我没有得到任何递归打印,不幸的是我不知道为什么。
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);
}
谢谢您的意见!
解决方案
还有其他问题(参见 Botje 的评论),还有:
printf("%i\n", st->top);
是什么类型的st->top
?如果你用 format 打印会发生什么%i
?
推荐阅读
- reactjs - 用 formik 转义方括号
- c# - 拆分字符串并转换为可为空的 long
- r - 具有不同列数的制表符分隔文件 - R
- sinch - 如何在 sinch PSTN JS-SDK 中使用网络到电话接听来电
- jsqlparser - JSQL Parser - 关于 dblink 的信息
- c# - 如何统一从子类更改父类变量
- alfresco - Alfresco:搜索所有没有父节点的节点
- jquery - jquery:不选择不排除预期元素
- java - 使用大量行时出现 RowsExceededException
- c - 预快速警告:“算术溢出:32 位值被移位,然后转换为 64 位值。”