C++ 在c+中递归显示链表+;

C++ 在c+中递归显示链表+;,c++,C++,我试图递归地显示链表中的数据,但我不确定我的问题是在递归函数中,还是我没有以0结束我的列表 这是我的递归函数: void ReverseDisplay(Node *head){ // call by Display function cout << left; if (head == 0) return; head = head->next ; // go to the next node ReverseDisplay(head); cout << setw(1

我试图递归地显示链表中的数据,但我不确定我的问题是在递归函数中,还是我没有以0结束我的列表

这是我的递归函数:

void ReverseDisplay(Node *head){ // call by Display function
cout << left; 
if (head == 0) return;

head = head->next ; // go to the next node
ReverseDisplay(head);
cout << setw(15) << head->ID << setw(15) << head->Num_hour << setw(15) << head->hourlyRate << endl;
void ReverseDisplay(节点*头){//显示函数调用
cout next;//转到下一个节点
反向展开(头部);
cout>hourRate;
while(填充){
//创建节点并填充它
节点*员工=新节点;
员工->ID=ID;
员工->小时数=小时数;
员工->小时费率=小时费率;
员工->下一步=0;
AddNode(head,Employee);//用于解释4种情况的函数
填充>>id>>numHour>>hourRate;
}//外部时间
infle.close();
}

AddNade函数是:

void AddNode(Node *&head, Node *Employee){

if ( (head == 0) || (head->ID > Employee->ID) ){

        Employee->next = head ;     
        head = Employee;
    }
    else {

        Node *travel = head , *trail = 0;
        while ( (travel != 0) && (travel->ID < Employee->ID )){
            trail = travel;
            travel = travel->next;

        } // end while
    Employee->next = travel;
    trail->next = Employee;


    } // end else   
void AddNode(节点*&头,节点*员工){
如果((head==0)| |(head->ID>Employee->ID)){
员工->下一步=主管;
负责人=员工;
}
否则{
节点*travel=head,*trail=0;
而((旅行!=0)和&(旅行->身份证<员工->身份证)){
trail=旅行;
旅行=旅行->下一步;
}//结束时
员工->下一步=出差;
trail->next=员工;
}//结束其他
}

如果有人能帮助我,我会很感激…

你的
反向显示()
松开(不要显示)第一个节点(如果我没有错的话);我的建议是

void ReverseDisplay(Node *head){ // call by Display function
   cout << left;
   if ( head ) {
       ReverseDisplay(head->next);
       cout << setw(15) << head->ID << setw(15) << head->Num_hour << setw(15) << head->hourlyRate << endl;
   }
您失去了原始的
值,无法显示它

它可以通过调用
ReverseDisplay()
的迭代来显示,但是如果您在
ReverseDisplay()
的第一次迭代中,则不会显示


p、 s:抱歉我的英语不好

我建议使用迭代循环遍历链接列表。对于每个递归调用,递归循环将在“堆栈”上放置大量内容。通常,堆栈的容量小于其他内存。一个迭代的方法使用更少的内存。谢谢你,但是你能告诉我我的代码有什么问题吗;希望这有帮助。
void ReverseDisplay(Node *head){ // call by Display function
   cout << left;
   if ( head ) {
       ReverseDisplay(head->next);
       cout << setw(15) << head->ID << setw(15) << head->Num_hour << setw(15) << head->hourlyRate << endl;
   }
head = head->next ; // go to the next node