数据结构——链表逆序打印(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);

}

测试:(如图)
数据结构——链表逆序打印(C语言版)_第1张图片

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

你可能感兴趣的:(学习笔记,每日一题)