设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。
考虑到从头到尾输出比较简单,本题的思路很自然地联系到借助上题链表逆置的方法来实现,改变链表的方向,然后就可以从头到尾实现反向输出了。
此外,本题还可以借助一个栈来实现,每经过一个结点时,将该结点放入栈中。在遍历完整个链表后,再从栈顶开始输出结点值即可。
既然能用栈的思想解决,也就很自然地联想到了用递归来实现,每当访问一个结点时,先递归输出它后面的结点,再输出该结点自身,这样链表就反向输出了。
如下图所示:
本题代码如下:
void R_Print(LinkList L){
//从尾至头输出单链表L中每个结点的值
if(L->next!=NULL){
R_Print (L->next) ; //递归
} //if
print (L->data) ; //输出函数
}