打印单链表

时间:2013-05-23 18:52:59

标签: c

我的这个功能有问题。当我调用它时,应该从最后(尾部)到第一个(头部)打印客户端。

问题是我想从第一个(头部)到最后一个(尾部)打印它们。我尝试过的所有内容都会导致分段错误或只打印第一个客户端。

请注意,该计划是关于银行的。我有一个客户队列,我想按顺序打印。

提前谢谢!

void printAll(clientData* tail) {
    clientData *current;
    current = tail;
    if (current == NULL) {
        printf("There is no client in queue\n");
        return ;
    }
    while (current != NULL) {
        printf("%s %s %d/%d/%d %s %s %s %s\n",
            current->firstname,
            current->lastname,
            current->birthday.day,
            current->birthday.month,
            current->birthday.year,
            current->bankaccount,
            current->telephone,
            current->email,
            current->bankcommand);

        current = current->next;
    }
    return;
}

1 个答案:

答案 0 :(得分:4)

你需要的是一个堆栈。当您以递归方式调用函数时,系统会自动为您提供一个:

void printAll(clientData* current)
{
    if (current->next != NULL) {
        printAll(current->next);
    }
    printf("%s %s %d/%d/%d %s %s %s %s\n", current->firstname,current->lastname,current->birthday.day,current->birthday.month,current->birthday.year,current->bankaccount,current->telephone,current->email,current->bankcommand);
}