我的这个功能有问题。当我调用它时,应该从最后(尾部)到第一个(头部)打印客户端。
问题是我想从第一个(头部)到最后一个(尾部)打印它们。我尝试过的所有内容都会导致分段错误或只打印第一个客户端。
请注意,该计划是关于银行的。我有一个客户队列,我想按顺序打印。
提前谢谢!
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;
}
答案 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);
}