数据结构——链表逆序打印(C语言版)

链表

一种链式存储的线性表,由任意地址的空间链接起来,其中这个任意的空间称为结点,每个结点当中包含了数据以及下一个结点

某些情况下,要求逆序打印链表:即从尾到头打印链表

思路解析

每个结点都指向下一个结点,不能逆向访问,于是乎:要想打印最后一个结点,就必须打印其之前的所有结点, 由此思路,很显然,我们应该采取的方法是:递归 递归 递归!

递归:是程序调用自身的编程技巧 ,直接或间接的调用自身!
思想:将大事化小的思想,问题解题方式相同或相似!
优点:代码形式简单,大大减少代码量!
缺点:调用次数过多可能会导致系统崩溃!

void PrintSListFromTailToHead(PNode pHead)

{

assert(pHead);

if (NULL == pHead)                            //判空
{
    printf("顺序表为空,无法打印!!\n");
    return;
}

PNode pIndex = NULL;

pIndex = pHead;

while (NULL != pIndex->_pNext)                     //递归限制条件
{
    PrintSListFromTailToHead(pIndex->_pNext);    // 递归
    pIndex->_pNext = NULL;

}
printf("%d ", pIndex->_data);

}

测试:(如图)
先尾插四个结点,再顺序打印链表,得到:1  2  3  4;再调用逆序打印的函数,得到:4  3  2  1;测试成功!

另外:一些链表的基本操作,可见博客:https://blog.csdn.net/code_zx/article/details/80024207

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值