我刚试了一个程序来反转打印一个单一的链表。
假设链接列表已准备好5个元素:
1->2->3->4->5
我写了一个程序,以相反的顺序打印,如:5 4 3 2 1
但我的程序打印为5 4 3 2
; 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);
}
}
答案 0 :(得分:13)
也许就像这样
void Reverse_List(abc_t *pNode){
if(pNode==NULL)
return;
Reverse_List(pNode->pNext);
printf("The node is %d\n", pNode->a);
}
答案 1 :(得分:3)
了解通话的工作原理
您有列表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的回答