一种链式存储的线性表,由任意地址的空间链接起来,其中这个任意的空间称为结点,每个结点当中包含了数据以及下一个结点!
某些情况下,要求逆序打印链表:即从尾到头打印链表
每个结点都指向下一个结点,不能逆向访问,于是乎:要想打印最后一个结点,就必须打印其之前的所有结点, 由此思路,很显然,我们应该采取的方法是:递归 递归 递归!
递归:是程序调用自身的编程技巧 ,直接或间接的调用自身!
思想:将大事化小的思想,问题解题方式相同或相似!
优点:代码形式简单,大大减少代码量!
缺点:调用次数过多可能会导致系统崩溃!
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);
}
另外:一些链表的基本操作,可见博客:https://blog.csdn.net/code_zx/article/details/80024207