算法学习十四----逆序输出链表

来源:互联网 发布:脸部皮肤粗糙 知乎 编辑:程序博客网 时间:2024/06/05 00:15
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。
逆序输出链表,可以采用借用额外空间,使用栈的数据结构,然后遍历一次链表,且每遇到一个节点就将其放入到栈中,直到最后一个节点,最后将栈输出,这样就实现了逆序输出链表。
还有一种方法就是递归实现,每次访问到一个节点的时候,先递归输出它的下一个节点,再输出节点本身,这样就实现了想要的结果。

算法伪代码如下:   

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;}

0 0
原创粉丝点击