题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。
逆序输出链表,可以采用借用额外空间,使用栈的数据结构,然后遍历一次链表,且每遇到一个节点就将其放入到栈中,直到最后一个节点,最后将栈输出,这样就实现了逆序输出链表。
还有一种方法就是递归实现,每次访问到一个节点的时候,先递归输出它的下一个节点,再输出节点本身,这样就实现了想要的结果。
算法伪代码如下:
if node is not null
if next node is not null
then output next node recursively
out itself
C++实现
template <class T>
Chain<T> Chain<T>::Reverse(const Chain<T> &c)
{
ChainNode<T> *p = c.first;
Chain<T> newc;
ChainNode<T> *q;
while(p)
{
q = p;
newc.Insert(0, q->data);
p = p->link;
}
return newc;
}