C 使用递归函数反向打印链表
我刚刚试用了一个程序来反向打印单数链表 假设链表准备好了5个元素: 1->2->3->4->5 我写了一个程序,以相反的顺序打印,如:5432,但我的程序只打印为5432;1没有打印。为什么?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
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