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

本文介绍了两种链表逆序输出的方法:一是利用栈作为辅助数据结构,遍历链表并将节点压入栈中,最后依次弹出实现逆序;二是采用递归方式,先递归访问至链表尾部节点再返回并输出各节点值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。
逆序输出链表,可以采用借用额外空间,使用栈的数据结构,然后遍历一次链表,且每遇到一个节点就将其放入到栈中,直到最后一个节点,最后将栈输出,这样就实现了逆序输出链表。
还有一种方法就是递归实现,每次访问到一个节点的时候,先递归输出它的下一个节点,再输出节点本身,这样就实现了想要的结果。

算法伪代码如下:   

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值