Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用递归函数反向打印链表_C_Recursion_Singly Linked List - Fatal编程技术网

C 使用递归函数反向打印链表

C 使用递归函数反向打印链表,c,recursion,singly-linked-list,C,Recursion,Singly Linked List,我刚刚试用了一个程序来反向打印单数链表 假设链表准备好了5个元素: 1->2->3->4->5 我写了一个程序,以相反的顺序打印,如:5432,但我的程序只打印为5432;1没有打印。为什么? int Reverse_List(abc_t *pNode) { abc_t *pTemp; int count = 5; if (pNode->pNext != NULL) { pNode = pNode->pNext; Revers

我刚刚试用了一个程序来反向打印单数链表

假设链表准备好了5个元素: 1->2->3->4->5

我写了一个程序,以相反的顺序打印,如:5432,但我的程序只打印为5432;1没有打印。为什么?

int Reverse_List(abc_t *pNode) {
    abc_t *pTemp;
    int count = 5;

    if (pNode->pNext != NULL) {
        pNode = pNode->pNext;
        Reverse_List(pNode);
        printf("The node is %d\n", pNode->a);
    }
}
也许像这样

void Reverse_List(abc_t *pNode){
    if(pNode==NULL)
        return;

    Reverse_List(pNode->pNext);
    printf("The node is %d\n", pNode->a);
}
也许像这样

void Reverse_List(abc_t *pNode){
    if(pNode==NULL)
        return;

    Reverse_List(pNode->pNext);
    printf("The node is %d\n", pNode->a);
}
看看呼叫是如何工作的

您有列表1->2->3->4->5

现在递归开始于

pnode = 1;    pnode->next=2; (!NULL)      (print 2)   
  pnode=2;    pnode->next=3; (!NULL)      (print 3)   
    pnode=3;    pnode->next=4 (!NULL)     (print 4)   
       pnode=4;   pnode->next=5 (!NULL)   (print 5)   
          pnode=5;   pnode->next==NULL
正如你们看到的,当你们有一个指针时,它会在你们前进的时候打印两个

有关正确的代码,请参见@BLUEPIXY的答案

参见调用的工作原理

您有列表1->2->3->4->5

现在递归开始于

pnode = 1;    pnode->next=2; (!NULL)      (print 2)   
  pnode=2;    pnode->next=3; (!NULL)      (print 3)   
    pnode=3;    pnode->next=4 (!NULL)     (print 4)   
       pnode=4;   pnode->next=5 (!NULL)   (print 5)   
          pnode=5;   pnode->next==NULL
正如你们看到的,当你们有一个指针时,它会在你们前进的时候打印两个

有关正确的代码,请参见@BLUEPIXY的答案

1未打印。为什么?printf节点是%d\n,pNode->a;pNode was pNode->pNextSuggestion:不需要int计数和abc_t*p提示1未打印。为什么?printf节点是%d\n,pNode->a;pNode是pNode->pNextSuggestion:不需要int计数和abc_t*pTemp