首页 > 解决方案 > 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);
}

谢谢您的意见!

标签: crecursionstack

解决方案


还有其他问题(参见 Botje 的评论),还有:

printf("%i\n", st->top);

是什么类型的st->top?如果你用 format 打印会发生什么%i


推荐阅读