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